CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  网络通信/分布式开发

有谁做过LED点阵屏的串口通信? (应该有人会吧)

楼主ly1129(要做就做大的)2005-01-17 11:15:06 在 Delphi / 网络通信/分布式开发 提问

内码条屏通讯协议  
  一,帧格式:  
                  |<-8bytes控制信息->|<-90bytes   显示内容->|  
  |1|2|3|4|5|6|7|8|9|10|11|12|....................|103|  
  1:     =(n+50h   )       n为屏号  
  2:     =(n+50h   )       n为屏号  
  3:     =(n+50h   )       n为屏号  
  (发送第1,2,3字节时“奇偶位”=1,发送第4—103字节时“奇偶位”=0)  
  4:     帧标志  
  =7FH   起始帧帧标志  
  =7EH   数据帧帧标志  
  =7DH   结束帧帧标志  
  5:     0  
  6:     0  
  7:     到本幕结束标志  
  =0   还有其他幕  
  =1   到本幕结束  
  8:     幕与幕之间延时  
  =0---19(秒)  
  9:     动画  
  =0---4                
  10:   引入引出方式  
  11:   速   度  
  12:   追加方式  
  13—102:数据  
  103:累加和(4---102字节相加,溢出不管)  
   
  帧格式详细描述:  
  1:)  
  起始帧结构(共103个字节):  
  第一,二,三个字节为屏号:若接受屏为n号屏则第一,二,三个字节填充n+50h(十六进制)  
  第四个字节为起始帧帧标志7fh(十六进制)  
  第五,六,七个字节为0  
  第八个字节为幕间延时,既一幕数据在屏上的停留时间,取值为0到19,单位为秒。要使该   参数该值只有在第12个字节指定为暂停方式是才有效。  
  第九个字节指定该幕的动画方式,该值只有当第12个字节指定为动画方式时才有效。  
  动画方式(Cartoon)取值为:0:吃豆、1:射箭、2:举重、3:狮子、4:奔马  
  第十个字节为该幕的引入,引出方式。  
  该字节的高四位为引入方式,低四位为引出方式;  
  引入方式:  
  YingRu=     0:"右端-左端移入"  
      1:"左端-右端移入"  
      2:"下端-上端卷入"  
      3:"上端-下端卷入"  
      4:"右端-左端跳入"  
      5:"左端-右端展开"  
      6:"右端-左端展开"  
      7:"下端-上端展开"  
      8:"上端-下端展开"  
      9:"中间-两端展开"  
      10:"两端-中间展开"  
      11:"中间-上下展开"  
      12:"上下-中间展开"  
      13:"立   即   显     示"  
      14:"预                 备"  
      15:"随                 机"  
                          引出方式:  
  YingChu=     0:"右端-左端移出"  
      1:"左端-右端移出"  
      2:"下端-上端卷出"  
      3:"上端-下端卷出"  
      4:"右端-左端跳出"  
      5:"左端-右端闭合"  
      6:"右端-左端闭合"  
      7:"下端-上端闭合"  
      8:"上端-下端闭合"  
      9:"中间-两端闭合"  
      10:"两端-中间闭合"  
      11:"中间-上下闭合"  
      12:"上下-中间闭合"  
      13:"立     即   消   失"  
      14:"预                 备"  
      15:"随                 机"  
  第十一个字节为速度:指定该幕移动的速度。取值为0到7,0最快。  
  第十二个字节为追加方式:  
  |动画|停止|分割|时间|连续|暂停|         |闪烁|  
  (高位)                             (低位)  
  当相应的位为1时表明该种追加方式有效。  
  从第十三个字节到第102个字节为要发送的数据。数据格式如下:  
  当该字符为汉字时,一个字符占用四个字节:  
  |字体属性|区码|位码|0|  
  当为一个西文字符时,一个字符占用两个字节:  
  |字体属性|ASCII码|  
  单色条屏字体属性取值为:  
  08h(十六进制):细体正常  
  22h(十六进制):细体反白  
  28h(十六进制):粗体正常  
  02h(十六进制):粗体反白  
  双色条屏字体属性取值为:  
  |D7|D6|D5|D4|D3|D2|D1|D0|       00   black     00   black       00   black  
      |     |     |     |     |     |     |     |         01   red         01   red           01   red  
      |__|     |__|     |__|     |__|         10   green     10   green       10   green  
      |           |           |           |               11   yellow   11   yellow     11   yellow  
      宽         套         主         背             套                 主?               背  
                                      例:   xx   01   00   00   --   green.yellow.red  
                                                xx   10   00   00   --   red.yellow.green?  
  第103个字节为累加和:该累加和为除屏号(既前三个字节)和最后一个字节(既第   103个字节)外该幕的其余字符的累加值。  
   
  2:)  
  数据帧结构(共103个字节):数据帧(7E帧)除帧标志为“7EH”外,其他与起始帧一样。  
  3:)  
  结束帧结构(共103个字节)。  
  第一,二,三个字节为屏号:  
  若接受屏为n号屏则第一个字节填充n+50h(十六进制)  
  第四个字节为结束帧帧标志7dh(十六进制)  
  第5个字节到第102个字节全为0  
  第103个字节为累加和:  
  该累加和为除屏号(既前三个字节)和最后一个字节(既第   103个字节)外该幕的其余字符的累加值。  
   
  二.发送方法:  
  1.起始帧+N个数据帧(0<=N<=199)+结束帧。必须最先发送起始帧,然后发送数据帧,最后发送结束帧。起始帧中包含第一幕数据。结束帧不包含数据。起始帧,数据帧的“到本幕结束标志”必须置“0”。  
      2.起始帧。但起始帧中的“到本幕结束标志”必须置“1”。  
      3.起始帧+N个数据帧(0<=N<=199)。其中最后一个数据帧中的“到本幕结束标志”必须置“1”。  
  说明:A,起始帧中包含第一幕数据,结束帧不包含数据。  
   
  三.RS-232通讯设置及注意事项:  
  波特率:2400bps。  
  格     式:1个起始位,8个数据位,1个奇偶位,1个停止位。  
  奇偶位:发送屏号时“奇偶位”=1,发送数据时“奇偶位”=0。  
  发送完“屏号”后要延时15ms。  
  每字节之间考虑设置“延时”(大部分情况下字节之间不需要延时)。  
  每帧之间一定考虑设置“延时”。  
   
  高手们能提供思路,如何做?  
  假如我要在屏上显示一个字母“K”,发送命令应如何写? 问题点数:80、回复次数:8Top

1 楼ly1129(要做就做大的)回复于 2005-01-17 11:15:23 得分 0

我是这样写的,可是不行,请大侠们指点一下:  
  implementation  
  var  
      hComm:THANDLE;  
      DCB:tdcb;  
   
  {$R   *.dfm}  
  procedure   initcom(btl,STOPBITS,PARITY,BYTESIZE:integer);  
  begin  
          GETCOMMSTATE(hcomm,DCB);  
          DCB.BAUDRATE:=btl;  
          DCB.STOPBITS:=STOPBITS;  
          DCB.PARITY:=PARITY;  
          DCB.BYTESIZE:=BYTESIZE;  
          SETCOMMSTATE(hcomm,DCB);  
  end;           //}  
   
  procedure   outdata(b:byte);  
  begin  
      filewrite(hcomm,b,1);  
  end;//}  
   
  function   disp(InStr,FontName,BitmapName:PChar;FontSize:byte;comm:byte;number:byte;btl:integer;x:integer;y:integer;mode:byte;speed:byte;delaytime:byte):byte;  
  const  
      ramadr=0;  
      Page=1;  
      pagecount=1;  
      colorswap=0;  
      rgswap=1;  
      refresh=1;      
  var  
      commstr:pchar;  
  begin  
      commstr:=pchar('com'+inttostr(comm));  
      hComm:=CreateFile(commstr,GENERIC_READ   or   GENERIC_WRITE,0,nil,Open_Existing,FILE_SHARE_DELETE,0);//打开串口  
      if   hcomm=INVALID_HANDLE_VALUE   then  
      begin  
          disp:=0;  
          exit;  
      end;  
   
      //起始帧   start  
      initcom(btl,1,1,8);//初始化串口  
      sleep(15);  
      outdata($50);//屏号       第1字节  
      //sleep(15);  
      outdata($50);//屏号       第2字节  
      //sleep(15);  
      outdata($50);//屏号       第3字节  
      sleep(15);  
      initcom(btl,1,0,8);//初始化串口  
      sleep(15);  
      outdata($7F);//帧标志字节         第4字节  
      outdata($00);//                               第5字节  
      outdata($00);//                               第6字节  
      outdata($FF);//到本幕结束标志字节     第7字节  
      outdata($02);//幕与幕之间延时字节     第8字节  
      outdata($00);//动画字节                         第9字节  
      outdata($00);//引入引出方式字节         第10字节  
      outdata($00);//速度字节                         第11字节  
      outdata($00);//追加方式字节                 第12字节  
          //begin   data  
          outdata(fontsize);                               //第13字节  
          outdata($70);     //p                             //第14字节  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);//outdata($00);outdata($00);  
          //end   data  
      outdata($F8);   //第103字节  
      //起始帧   end  
   
      {sleep(50);  
   
      //数据帧   start  
      initcom(2400,1,1,8);//初始化串口  
      outdata(number+$50);//屏号       第1字节  
      sleep(15);  
      outdata(number+$50);//屏号       第2字节  
      sleep(15);  
      outdata(number+$50);//屏号       第3字节  
      sleep(15);  
      initcom(2400,1,0,8);//初始化串口  
      outdata($7E);//帧标志字节         第4字节  
      outdata($00);//                               第5字节  
      outdata($00);//                               第6字节  
      outdata($00);//到本幕结束标志字节     第7字节  
      outdata($01);//幕与幕之间延时字节     第8字节  
      outdata($01);//动画字节                         第9字节  
      outdata($00);//引入引出方式字节         第10字节  
      outdata($00);//速度字节                         第11字节  
      outdata($00);//追加方式字节                 第12字节  
          outdata(fontsize);                               //第13字节  
          outdata($4B);     //K                     //第14字节  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($7E+$00+$00+$00+$01+$01+$00+$00+$00+$08+$4B);  
          //end   data  
      //数据帧   end   //}  
   
      sleep(15);  
   
      //结束帧   start  
      initcom(btl,1,1,8);//初始化串口  
      sleep(15);  
      outdata($50);//屏号       第1字节  
      //sleep(15);  
      outdata($50);//屏号       第2字节  
      //sleep(15);  
      outdata($50);//屏号       第3字节  
      sleep(15);  
      initcom(btl,1,0,8);//初始化串口  
      sleep(15);  
      outdata($7D);//帧标志字节         第4字节  
      outdata($00);//                               第5字节  
      outdata($00);//                               第6字节  
      outdata($00);//到本幕结束标志字节     第7字节  
      outdata($00);//幕与幕之间延时字节     第8字节  
      outdata($00);//动画字节                         第9字节  
      outdata($00);//引入引出方式字节         第10字节  
      outdata($00);//速度字节                         第11字节  
      outdata($00);//追加方式字节                 第12字节  
          outdata($00);  
          outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);//outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          //outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);outdata($00);  
          outdata($7D);  
      //结束帧   end  
  {/////////////////////begin   data  
   
      fileclose(hcomm);  
   
      disp:=2;  
  end;       //}  
      fileclose(hcomm);  
   
      disp:=2;  
  end;  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  begin  
      if   disp('','','',$08,1,1,2400,100,100,1,1,15)=2   then  
      showmessage('发送成功!');  
  end;  
   
  end.  
  Top

2 楼laiqinghe(生活就如它……)回复于 2005-01-17 13:58:20 得分 10

UP   一下Top

3 楼lsypenghong(lsy)回复于 2005-01-17 14:23:46 得分 10

hoho  
  bupTop

4 楼ly1129(要做就做大的)回复于 2005-01-20 10:02:22 得分 0

如果搞过的应该不难,指点一下吧Top

5 楼f_zhihong()回复于 2005-02-02 17:15:43 得分 20

你在干啥?测试,写全0数据可以用循环呀,该类问题没别的就是看懂协议,慢慢来Top

6 楼xiaoyao961(逍遥浪子)回复于 2005-02-03 03:24:34 得分 10

顶Top

7 楼Kshape(C/C++初学者~~~~)回复于 2005-02-03 07:12:34 得分 20

做过的就不难  
  对我们这样没做过的来说  
  就是天书Top

8 楼Kshape(C/C++初学者~~~~)回复于 2005-02-03 07:12:46 得分 10

帮UP  
  有分么?Top

相关问题

  • 串口通信
  • 串口通信
  • pb串口通信
  • C#串口通信
  • 串口通信-HELP
  • VC++的串口通信
  • 串口通信的问题:
  • 串口通信问题。
  • 求教!串口通信
  • 关于串口通信!急。。。。

关键词

  • 字符
  • 数据
  • 字体
  • 属性
  • 结构
  • 右端
  • 十六进制
  • 累加
  • 闭合
  • 下端

得分解答快速导航

  • 帖主:ly1129
  • laiqinghe
  • lsypenghong
  • f_zhihong
  • xiaoyao961
  • Kshape
  • Kshape

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo