内码条屏通讯协议
一,帧格式:
        |<-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”,发送命令应如何写?

解决方案 »

  1.   

    我是这样写的,可是不行,请大侠们指点一下:
    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.