【问题标题】:different operations in displaying operation显示操作中的不同操作
【发布时间】:2015-10-06 18:10:02
【问题描述】:

我正在尝试在当前目录中名为“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);

【问题讨论】:

    标签: assembly intel led microprocessors


    【解决方案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)
    }
    

    【讨论】:

    • 我还有一个问题。 LED 在静态情况下实际上是如何发光的。我的意思是在任何单元格中,如果相应的行和列值等于1,那么单元格会发光吗?是否有这种类型的案例或任何其他逻辑? @MByD
    • @user5404530 - 如果我回答了您的问题,请将我的回答标记为已接受,如果您还有其他问题,请在新帖子中发布。它使网站更干净,并帮助其他人使用网站中的问答。
    • 但问题与帖子有关。如果您回答这个问题,我一定会接受您的回答 :) @MByD
    • 不是因为PB0是最左边的列,PB7是最右边的列,所以1每次都从右到左旋转,@MByD
    • 好像整个图片会向左旋转,但这需要列选择器向另一个方向旋转
    猜你喜欢
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 2012-12-15
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    相关资源
    最近更新 更多