客户端输入文字(文字大小48点),然后文字转换成图片按点阵发送到led屏。
有没有什么相关的资料给我参考参考啊。
需求如下:
4.16 发送图片
#PIC23,L,5,5#<本报文起始字节数2字节><2字节标识><图片数据...>
本报文起始字节数2字节:
  表示本报文起始字节数(即前面已发送到字节数),因此图片每种颜色总长度最长为64KB
  
2字节标识:
  高2位:
    11表示本报文是红色或单色数据
    10表示本报文是绿色数据
    00表示本报文是图片描述报文,Unicode编码,文字长度应与图片长度换算成文字的长度一致,否则会被屏控卡截断或补充空格
  最低位:
    0表示本报文不是最后一个报文
    1表示本报文是最后一个报文,收到此报文将写入字幕信息准备好播放。图片描述报文必须是最后一个报文且起始位置不能为0。
  其它位:
    保留,应填1每种颜色图片数据的格式为以8列(一个字节)为单位,从左上角开始,从上往下一个字高(16行),再从左往右到屏宽,然后再继续下一个字高的屏幕区域。每个bit 0代表亮灯,1代表暗灯。除最后一个报文外每个报文的图片数据长度为512个字节,一幅图片可能需要多个报文,每个报文均应按照以上格式,起始字节数从0,0x200,0x400依次递增。

解决方案 »

  1.   

    填充二值图,然后取黑色填充二维数组            Bitmap bmp = new Bitmap(48, 48);
                Graphics g = Graphics.FromImage(bmp);
                Font font = new Font("宋体", 36.0f);
                Brush blackBrush = new SolidBrush(Color.Black);
                Brush whiteBrush = new SolidBrush(Color.White);
                g.FillRectangle(whiteBrush, 0, 0, 48, 48);
                g.DrawString("我", font, blackBrush, new PointF(-8, 0));
                g.Save();            pictureBox1.Image = bmp;            byte[,] matrix = new byte[48, 48];
                for (int y = 0; y < 47; y++)
                {
                    for (int x = 0; x < 47; x++)
                    {
                        if (bmp.GetPixel(x, y) == Color.Black)
                            matrix[x, y] = 0x1;
                    }            }
      

  2.   

    因为是led屏.所以是取红色的.这个问题不大.
    但采取出来的数据为什么是这样的? :0  0.0.0.0:3700  367  RecvFrom  
    0000  CB CB CB 00 00 00 00 00 04 00 00 00 A3 CB CB CB    ................
    0010  00 F4 12 00 00 00 00 00 68 AC F1 00 35 31 30 30    ........h...5100
    0020  34 31 30 37 32 30 30 38 00 23 00 50 00 49 00 43    41072008.#.P.I.C
    0030  00 31 00 2C 00 30 00 2C 00 33 00 2C 00 39 00 2C    .1.,.0.,.3.,.9.,
    0040  00 30 00 30 00 3A 00 30 00 30 00 2D 00 32 00 33    .0.0.:.0.0.-.2.3
    0050  00 3A 00 30 00 30 00 2C 00 39 00 39 00 2D 00 31    .:.0.0.,.9.9.-.1
    0060  00 32 00 2D 00 33 00 31 00 23 00 00 00 FE FF FF    .2.-.3.1.#......
    0070  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
    0080  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
    0090  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
    00A0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
    00B0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
    00C0  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
    00D0  FF FF FF FF FF FF C3 BD E1 DD BD BD C0 FF FF FF    ................
    00E0  FF FF FF FF FF FF C3 BD E1 DD BD BD C0 FF FF FF    ................
    00F0  FF FF FF FF FF FF C3 BD E1 DD BD BD C0 FF FF FF    ................
    0100  FF FF FF FF FF FF C3 BD E1 DD BD BD C0 FF FF FF    ................
    0110  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
    0120  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
    0130  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
    0140  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
    0150  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
    0160  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF       ...............
    FF代表黑色的背景可以理解,C3 BD这样是怎么生成的呢??
    很急啊.
      

  3.   

    led屏是单色的.就是红色的.
    而且这个数据时文字转成图片按点阵发送的.
      

  4.   

    如果你的图形是8位图 C3 BD  是对应颜色表里的 数据 
    如果不是1位图形  就把C3转换为 2进数据看看
      

  5.   

    二维数组不行的啊.led屏不可能识别二维数组的.
      

  6.   

    要转成十六进制啊,每8位转成一个字节,转换方法取决于你的led控制芯片
      

  7.   

    #PIC23,L,5,5#<本报文起始字节数2字节><2字节标识><图片数据...>
    本报文起始字节数2字节:
      表示本报文起始字节数(即前面已发送到字节数),因此图片每种颜色总长度最长为64KB
      
    2字节标识:
      高2位:
        11表示本报文是红色或单色数据
        10表示本报文是绿色数据
        00表示本报文是图片描述报文,Unicode编码,文字长度应与图片长度换算成文字的长度一致,否则会被屏控卡截断或补充空格
      最低位:
        0表示本报文不是最后一个报文
        1表示本报文是最后一个报文,收到此报文将写入字幕信息准备好播放。图片描述报文必须是最后一个报文且起始位置不能为0。
      其它位:
        保留,应填1每种颜色图片数据的格式为以8列(一个字节)为单位,从左上角开始,从上往下一个字高(16行),再从左往右到屏宽,然后再继续下一个字高的屏幕区域。每个bit 0代表亮灯,1代表暗灯。除最后一个报文外每个报文的图片数据长度为512个字节,一幅图片可能需要多个报文,每个报文均应按照以上格式,起始字节数从0,0x200,0x400依次递增。给我的资料就这么一些.以数据以Unicode发送.
    楼上的救命啊.帮帮忙啊.
      

  8.   

    文字是红色的,背景是黑色的.就跟常见的led屏一样.
    文字转成图片.然后图片按点阵发送.
    找了半天也就找到这么点资料.
    晕了.
    http://topic.csdn.net/u/20100429/08/5ed965c9-4440-48a1-af72-b60a46177104.html
      

  9.   


    这边的判断要改一下的. 
    Bitmap bmp = new Bitmap(48, 48);
                Graphics g = Graphics.FromImage(bmp);
                Font font = new Font("宋体", 36.0f);
                Brush blackBrush = new SolidBrush(Color.Black);
                Brush whiteBrush = new SolidBrush(Color.White);
                g.FillRectangle(whiteBrush, 0, 0, 48, 48);
                g.DrawString("我", font, blackBrush, new PointF(-8, 0));
                g.Save();            pictureBox1.Image = bmp;            byte[,] matrix = new byte[48, 48];
                for (int y = 0; y < 47; y++)
                {
                    for (int x = 0; x < 47; x++)
                    {
                        Color pixel = bmp.GetPixel(x, y);
                        if (pixel.R == 0 && pixel.G == 0 && pixel.B == 0)
                            matrix[x, y] = 0x1;
                    }            }
    获取的byte二维数组怎么转换呢??
      

  10.   

    很简单啊,byte[,]   行列而已
    比如byte[0][1] 代表第2行第1个点的值
      

  11.   

    不是很复杂,文字转图片.net有方法,
    然后判断图片像素,如果是红色的就是(1or0),反之为0或1.