传输一个字节

[复制链接]
 楼主| yufe 发表于 2021-9-12 08:19 | 显示全部楼层 |阅读模式
我最近在做一个需要用到单片机与PC上位机通信的项目。我用的是RS232接口与PC通信,原本是想采用xmodem协议的,但发现不太适合我的项目。
我的项目是PC机需要向单片机发送指令和数据,单片机收到指令后需要进行一些操作并且返回一些状态信息。
但因为我的通信是非固定长度的数据传输,有时候只需要传输一个字节,而有的时候需要传输上百KB。
 楼主| yufe 发表于 2021-9-12 08:21 | 显示全部楼层
希望大家介绍一种可以变化传输数据长度,并且有校验功能
chuxh 发表于 2021-9-12 08:23 | 显示全部楼层
ModBUS试试
supernan 发表于 2021-9-12 08:26 | 显示全部楼层
不太理解你的问题
supernan 发表于 2021-9-12 08:32 | 显示全部楼层
PC机需要向单片机发送指令和数据,单片机收到指令后需要进行一些操作并且返回一些状态信息。
wangzsa 发表于 2021-9-12 08:34 | 显示全部楼层
PC的通信是怎么实现的?
chenjunt 发表于 2021-9-12 08:36 | 显示全部楼层
是利用串口调试助手呢?
chuxh 发表于 2021-9-12 08:39 | 显示全部楼层
scanf和printf函数在keil c中也能运行。
你可在keil c中运行该例程序,观测scanf和printf函数在keil c中的功能。
 楼主| yufe 发表于 2021-9-12 08:41 | 显示全部楼层

上位机是我自己做的
 楼主| yufe 发表于 2021-9-12 08:43 | 显示全部楼层
现在主要是想要一种"安全"、"长度可调整"的传输协议。
jiajs 发表于 2021-9-12 08:45 | 显示全部楼层
看一下modbus协议
zhenykun 发表于 2021-9-12 08:47 | 显示全部楼层

简单打包即可
包头+包类+长度+数据+CRC
zwll 发表于 2021-9-12 08:49 | 显示全部楼层

楼主的意思是串口要复用?
自己做一个协议吧。
juventus9554 发表于 2021-9-12 08:51 | 显示全部楼层
这样的应用无所谓什么协议,xmodem之类的想法就更差远了,在232标准操作距离之内,直接传输即可,不放心就附上CRC校验,然后做个很简单的应答式“协议”即可
supernan 发表于 2021-9-12 09:03 | 显示全部楼层
CRC校验是不是那个判断加上冗余码后是否能被G对方整除的那个?这种校验经常用到吗
tian111 发表于 2021-9-12 09:05 | 显示全部楼层
想想两个人之间怎么确认信息的准确交流,那么机器之间也是同样的。
xxrs 发表于 2021-9-12 09:07 | 显示全部楼层
在Win95时代,操作系统内置了一个“直接电缆连接”,可以通过串口或并口在两台PC间交互数据、文件等
tian111 发表于 2021-9-12 09:09 | 显示全部楼层

其“协议”甚至连CRC都没有用,而是采用奇偶校验,直接发送的。
xxrs 发表于 2021-9-12 09:11 | 显示全部楼层

自己定一个呗,
通讯包 = 包头 + 数据区 + 数据校验
包头 =  起始字节 + 数据长度  + 包头校验
over


校验算法, 看你要sum8,sum16,还是crc都随你...
 楼主| yufe 发表于 2021-9-12 09:13 | 显示全部楼层

安全就是要校验,要ack,要try包
长度可调整,那就是要传递长度信息
您需要登录后才可以回帖 登录 | 注册

本版积分规则

983

主题

10170

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部