2015-10-06 67 views
1

我试图在当前目录下名为“test”的文件夹中创建一个名为“test.txt”的文件,并在其中添加一些文本行。显示操作中的不同操作

我在程序中使用此代码段,但得到一个异常说,file is already in use by another process。这部分有没有问题?

File.Create(FileName); 
string fullPathName2 = Path.GetFullPath(FileName);    
File.AppendAllText(fullPathName2, time + Environment.NewLine); 

回答

1

在“静态”代码中,您有一个循环来设置矩阵的每一列。每次要设置的列由DL中的位掩码选择,它从0x80开始(第一列),然后再旋转7次(0x40,0x20,0x10,...),然后它返回到其初始值值,并且由于矩阵中有8列,每次都会得到相同的图像。

请注意,内存转储实际上是绘制数字的位图,每个字节表示单个列,从左到右。

在“移动”版本中,在每个循环(我们上面提到过)之后,我们执行另一个循环到DL,使它从下一个循环的下一列开始,所以如果第一个循环是从0x80- 0x01(导致矩阵的列取值00 00 41 FF 01 00 00 00),第二个是0x40-0x80。 (导致矩阵的列取值00 41 FF 01 00 00 00 00

例如,

迭代1:

value 00 00 41 FF 01 00 00 00 
col 0 1 2 3 4 5 6 7 

迭代2:

value 00 00 41 FF 01 00 00 00 
col 7 0 1 2 3 4 5 6 

编辑:

在我们仅在列之一点亮的LED每次迭代中,和其余的是关断,但似乎所有的列都已设置(这是一种幻觉)。我不知道灯光是否真的存在,但这就是我们无论如何看到的。

我的意思是在任何细胞,如果相应的行和列值等于1,则细胞会发光?

是,例如(X - LED上,O- - LED关闭):

0 O O O O O O O O 1 O O X X O O O O 1 O O O O O O O O 
0 O O O O O O O O 1 O O X X O O O O 1 O O O O O O O O 
1 O O O O O X O O 1 O O X X O O O O 1 O O O O O O O O 
0 O O O O O O O O 0 O O O O O O O O 1 O O O O O O O O 
0 O O O O O O O O 0 O O O O O O O O 1 O O O O O O O O 
0 O O O O O O O O 0 O O O O O O O O 1 O O O O O O O O 
0 O O O O O O O O 0 O O O O O O O O 1 O O O O O O O O 
0 O O O O O O O O 0 O O O O O O O O 1 O O O O O O O O 
    0 0 0 0 0 1 0 0  0 0 1 1 0 0 0 0  0 0 0 0 0 0 0 0 

你的静态组件的伪代码将是这样的:

// rotation of a byte 
#define ROR(x, n) (((x >> n) | (x << (8-n))) & 0xff) 
col_selector = 0x80; 
rows_map = {0x00, 0x00, 0x41, 0xFF, 0x01, 0x00, 0x00, 0x00} 
for (col_index = 0; i < col_index; ++col_index) 
{ 
    // 1st - 0x80 --> 0b10000000 --> 1st column from the left 
    // 2nd - 0x40 --> 0b01000000 --> 2nd column from the left 
    choose_cols(ROR(col_selector, col_index)); 
    // 1st - cols_map[0] --> 0x00 --> 0b00000000 --> don't set any row in column 0 
    // 3rd - cols_map[2] --> 0x41 --> 0b01000001 --> set the 2nd and 8th rows in column 2 
    choose_rows(rows_map[col_index]); 
} 

在第二种情况,我们把它换成另一个回路:

col_selector = 0x80; 
for (i = 0; i < 8; ++i) 
    // 1st time, col_selector is 0x80 
    // 2nd time, col_selector is ROR(0x80, 1) --> 0x40 
    rows_map = {0x00, 0x00, 0x41, 0xFF, 0x01, 0x00, 0x00, 0x00} 
    for (col_index = 0; i < col_index; ++col_index) 
    { 
     // first i iteration: 
     // 1st - 0x80 --> 0b10000000 --> 1st column from the left 
     // 2nd - 0x40 --> 0b01000000 --> 2nd column from the left 
     // second i iteration: 
     // 1st - 0x40 --> 0b01000000 --> 2nd column from the left 
     // 2nd - 0x20 --> 0b00100000 --> 3rd column from the left 
     // 8th - 0x80 --> 0b10000000 --> 1st column from the left 
     choose_cols(rotate col_selector col_index times to the right); 

     // this part is the same in both iterations 
     // 1st - cols_map[0] --> 0x00 --> 0b00000000 --> don't set any row in column 0 
     // 3rd - cols_map[2] --> 0x41 --> 0b01000001 --> set the 2nd and 8th rows in column 2 
     choose_rows(rows_map[col_index]); 
    } 
    col_selector = ROR(col_selector, 1) 
} 
+0

我还有一个问题。在静态情况下LED如何发光。我的意思是在任何单元格中,如果相应的行和列值等于1,那么单元格会发光?有这种类型的案件或任何其他逻辑吗? @MByD – user5404530

+1

@ user5404530 - 如果我回答了您的问题,请将我的答案标记为已接受,如果您有其他问题,请将其张贴在新帖子中。它使网站更清洁,并帮助其他人使用网站中的Q&A。 – MByD

+0

但问题与帖子有关。如果你回答这个问题,我肯定会接受你的答案:) @MByD – user5404530