Can_Chart上位机
前言
在某种情况下,电脑不支持U盘,网盘等外部网站访问不了,甚至以太网都没法支持的情况下。交流,工作都会变得很受限制,dbc,ldf,报文日志互传都会相当麻烦。那能咋办。"录报文" 啊!本上位机是基于图莫斯UTA0503开发的,必须支持canfd。通过Can_Chart这款上位机,可以实现有线交流,文件传输。

视频演示
can_chart上位机视频
啊博协议栈
三次握手
首先,上位机已经识别到本地连接图莫斯了,但是不知道对方有没有图莫斯可以与自己连接,所以需要发送连接请求。这里仿照TCP协议的三次握手,但是又简化了,听我道来。
TCP的三次握手需要给SYN和ACK的位置位,还需要随机序列号,太麻烦了,对于本上位机,不太想去定义这些位。
流程是这样子的:1、首先,谁发起的连接请求,谁就是客户端。发送id为0x10000001的canfd扩展帧,数据就是"SYN"三个字符的ascii码。2、被请求连接的那一方,就是服务器,服务器收到SYN之后,需要发送id为0x10000002的canfd扩展帧,数据就是"SYN-ACK"7个字符的ascii码。如果没在3秒内发出,客户端视为响应超时。
3、客户端收到SYN-ACK之后,需要再以id为0x10000001的canfd扩展帧,数据就是"ACK"三个字符的ascii码发送,否则服务器视为响应超时。

心跳报文
三次握手之后,双方就建立了连接,但是,如何维持连接?双方都需要知道对方还存在。这里仿造canopen协议的心跳报文。心跳报文的格式:如果当前设备作为服务器,那么帧格式是id:0x10000002 data:8位(十六进制显示)的图莫斯设备句柄(唯一);如果当前设备作为客户端,那么帧格式是id:0x10000001 data:8位(十六进制显示)的图莫斯设备句柄(唯一)。
当3秒内没收到对方心跳报文,视为与对方断开连接。
功能码
1、文件传输,需要知道对方传输的zip名字,我好接收之后文件名用对方的名字,不然接收到完整的也容易找不到。
2、文件大小,对方把一个zip分成多少帧报文需要告诉"我",方便"我"知道传输的进度,显示到进度条
3、传输一大堆报文,哪些属于真正的zip的有效数据
4、聊天室发出的无关紧要的数据,需要和zip有效数据区分开来。
这里仿造uds的服务的概念。为上述的功能定义了一个功能码
c
//功能码
typedef enum func_num{
Code_tran_filename = 1,//报文传输压缩文件名字
Code_tran_filesize, //报文传输压缩文件大小
Code_tran_filecontent, //报文出书压缩文件内容
Code_tran_chart, //can聊天
}Func_Num_E;
帧格式(canfd扩展帧):
客户端 id:0x18000001
服务器 id:0x18000002
数据:功能码(包头:1byte)
一帧携带的有效数据(包头:1byte)
当前帧在整个zip包传输的序号(包头:4byte)
有效数据(最大54byte)
crc32校验(包尾:4byte)
开始、结束
上边说到的几个功能码,都需要知道什么时候开始,什么时候结束,比如功能码1传输文件名称,功能码4聊天室,都不知道对方要传输的内容有多少,而且没有连续帧的概念,所以必须有那种类似IIC的起始(SCL = 1 SDA = 1->0)和结束(SCL = 1 SDA = 0->1)来表示。当开始时,清空缓冲区,传输过程中,就不断往缓冲区追加数据。当结束时,把数据一起显示到界面等操作。
开始和结束的帧格式也是很简单。
开始:
id:0x18000001
data:功能码,0x73(s),0x74(t),0x61(a),0x72®,0x74(t)
结束:
id:0x18000001
data:功能码,0x73(s),0x74(t),0x6F(o),0x70§
肯定响应、否定响应
目前只有功能码3,也就是内容传输接收方有做crc校验。
其他功能码都是不比较crc值,直接给出肯定应答,功能码4聊天,接收方不做应答,发送方一股脑发送,接收方照单接收。对于功能码3,把接收到的每一帧数据,除了crc32的4字节外去计数crc值,与接收到的对比,一样则发送肯定响应,不一样发送否定响应。
肯定响应:
id : 0x18000002
data :功能码 (1byte)+ x(无关值,1byte)+ 帧帧序号(接收到的帧帧序号,照抄,4byte)+ 功能码 (1byte)+ 0x79(y)+0x65(e)+0x73(s)
消极响应:
id : 0x18000002
data :功能码 (1byte)+ x(无关值,1byte)+ 帧帧序号(接收到的帧帧序号,照抄,4byte)+ 功能码 (1byte)+ 0x6E(n) + 0x6F(o)
相关资料下载连接
上位机下载、源码下载
注意
本文章和上位机仅作技术交流,不得使用Can_Chart上位机进行任何非法或剽窃行为,否则后果自负