通讯问题,请各位大虾帮忙!!(50分)

  • 主题发起人 luckchen8256
  • 开始时间
L

luckchen8256

Unregistered / Unconfirmed
GUEST, unregistred user!
在做一个串口通讯程序,通讯协议如下:
下行: Name(1), Cmd(1), Serial(1), Reserve(5), CRC16(2) 固定长:10 Bytes
上行: Name(1), Cmd(1), Serial(1), Len(2),Data(512), CRC16(2) 固定长:519 Bytes
下行说明:
SYN 同步字符,固定为 AA
Cmd 命令字符
GETDATA = 10 读取一个JEP图片文件
NXTDATA = 11 下帧数据
STPDATA = 12 停止读文件
NODATA = 13
Serial 系列号,每次进1
Reserve 保留
上行说明:
SYN 同步字符,固定为 AA
Name 相机号码
Cmd 命令字符
GETDATA = 10 发送一帧数据
Serial 系列号,每次进1
Len 本帧数据的有效长度(0-511)
Data 本帧数据内容
超时长:1000 msec
例子:
A=计算机 B=照相机
----------------------------------------------------------------------------------
1、 A -> B 发读JEP图片文件请求
SYN(AA), Name(??),Cmd(GETDATA), Serial(01), Reserve(00 00 00 00 00), CRC16(?? ??)
2、 B -> A 应答无文件
SYN(AA), Name(??),Cmd(NODATA), Serial(01), Len(00 00), Data(??*511), CRC16(?? ??)
----------------------------------------------------------------------------------
1、 A -> B 发读JEP图片文件请求
SYN(AA), Name(??),Cmd(GETDATA), Serial(01), Reserve(00 00 00 00 00), CRC16(?? ??)
2、 B -> A 应答有文件并发送第一帧
SYN(AA), Name(??),Cmd(GETDATA), Serial(01), Len(511),Data(??*256), CRC16(?? ??)
3、 A -> B 收到数据帧校验正确,创建文件,读2帧
SYN(AA), Name(??),Cmd(NXTDATA), Serial(02), Reserve(00 00 00 00 00), CRC16(?? ??)
4、 B -> A 发送第2帧
SYN(AA), Name(??),Cmd(NXTDATA), Serial(02), Len(511),Data(??*511), CRC16(?? ??)
5、 A -> B 收到数据帧校验正确,读3帧
SYN(AA), Name(??),Cmd(NXTDATA), Serial(03), Reserve(00 00 00 00 00), CRC16(?? ??)
...............................

6、 A -> B 收到数据帧校验正确,读7帧
SYN(AA), Name(??),Cmd(NXTDATA), Serial(07), Reserve(00 00 00 00 00), CRC16(?? ??)
7、 B -> A 发送第7帧
SYN(AA), Name(??),Cmd(NXTDATA), Serial(07), Len(511),Data(??*511), CRC16(?? ??)
8、 A -> B 收到数据帧校验错误,再读7帧
SYN(AA), Name(??),Cmd(NXTDATA), Serial(07), Reserve(00 00 00 00 00), CRC16(?? ??)
9、 B -> A 重新发送第7帧
SYN(AA), Name(??),Cmd(NXTDATA), Serial(07), Len(511),Data(??*511), CRC16(?? ??)
10、A -> B 收到数据帧校验正确,读8帧
SYN(AA), Name(??),Cmd(NXTDATA), Serial(08), Reserve(00 00 00 00 00), CRC16(?? ??)
11、B -> A 发送最后一帧
SYN(AA), Name(??),Cmd(NXTDATA), Serial(08), Len(?? ??),Data(??*????), CRC16(?? ??)
12、A -> B 收到数据帧校验正确,读9帧
SYN(AA), Name(??),Cmd(NXTDATA), Serial(09), Reserve(00 00 00 00 00), CRC16(?? ??)
13、B -> A 发送结束命令
SYN(AA), Name(??),Cmd(STPDATA), Serial(09), Reserve(00 00 00 00 00), CRC16(?? ??)
14、A 收到数据帧校验正确,关闭文件
不知如何下手,请各位大虾指教!
小弟初学串口编程,时间又紧迫,请大虾讲详细一点!
 
非常简单,不用那个有名的SPCOMM,可以使用最简单的TCOMPORT,
我可以MAIL给你;
你可以定义一个指向结构(记录)的指针,当数据收到后(这时候数据在一个
String里),你让你的记录指针等于String[1],然后你就直接访问你的数据域
 
接受答案了.
 
顶部