社区
Delphi
帖子详情
串口通信中的返回值的长度不确定,如何区分?一个网友的问题!
haoguozhong
2004-07-02 05:44:47
定时发送A指令,每次返回的数据长度不确定,如何对每次所返回的数据进行区分????????
...全文
163
11
打赏
收藏
串口通信中的返回值的长度不确定,如何区分?一个网友的问题!
定时发送A指令,每次返回的数据长度不确定,如何对每次所返回的数据进行区分????????
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
htyx
2004-07-07
打赏
举报
回复
哦,定时发送!看错了。那就?头尾都也可能在内容中出现?也就是说可能好多条的回复一起连在一起回来。还没有明确的头尾标示那就没办法。
htyx
2004-07-07
打赏
举报
回复
当然是完善协议了。做到有头有尾有长度有校验,就行了。如果自己能左右协议。那就用问答方式。发出命令接到回复后再发下一条命令。
hejunwu201
2004-07-07
打赏
举报
回复
用取位的方法可以实现,我以前也是遇到这样的问题!呵呵
haoguozhong
2004-07-07
打赏
举报
回复
up
jpyc
2004-07-05
打赏
举报
回复
http://www.56kc.com/web/technology/chuangkou.htm
haoguozhong
2004-07-05
打赏
举报
回复
返回的数据中也有可能出现与开始和结束界定符相同的啊,这种情况怎么办?
old_wei
2004-07-02
打赏
举报
回复
根据接收缓存区读取
brallow
2004-07-02
打赏
举报
回复
不是有界定开始的结束的字符不?你从收到的串中找出这个开始和结束界定符就可以了。
rockmanhqu
2004-07-02
打赏
举报
回复
接收到什吗数据啊?
详细情况?
rockmanhqu
2004-07-02
打赏
举报
回复
根据他的协议进行数据处理。
aiirii
2004-07-02
打赏
举报
回复
>>定时发送A指令,每次返回的数据长度不确定
一般, 有標識開始的字符, 你就可知道開始了,
將接收到的前面的字符去掉, 從開始位開始處理
VS2008SP1写的基于OVERLAPPED的
串口通信
模块
更新了下。。。 ************************************************************************ 函数名称:SP_InitComm 函数功能:初始化异步窗口操作模块 参数.一:lpComName In/Out:In 可空:N 意思:速率
返回值
类型:要读取的串口号码 意思:是否初始化成功 备注: *************************************************************************/ extern "C" __declspec(dllexport) BOOL SP_InitComm(LPCTSTR lpComName); //初始化串口操作 /************************************************************************ 函数名称:SP_CloseComm 函数功能:关闭串口
返回值
类型:无 意思: 备注:不在使用串口的时候可以关闭它。不然会造成下次使用出现
问题
*************************************************************************/ extern "C" __declspec(dllexport) void SP_CloseComm(); /************************************************************************ 函数名称:SP_ReadComm 函数功能:读取串口数据 参数.一:tszDest In/Out:In/Out 可空:N 意思:要保存到的缓冲区,提供
一个
缓冲区 参数.二:dwWriteLen In/Out:In/Out 可空:N 意思:读取的预计大小,实际写出大小
返回值
类型:逻辑型 意思:是否成功读取 备注: *************************************************************************/ extern "C" __declspec(dllexport) BOOL SP_ReadComm(TCHAR *pTszBuff,DWORD *pdwLen); /************************************************************************ 函数名称:SP_WriteComm 函数功能:异步发送串口数据 参数.一:tszData In/Out:In 可空:N 意思:要发送的数据字符串指针 参数.二:dwWriteLen In/Out:Out 可空:N 意思:实际发送的
长度
,可空
返回值
类型:逻辑型 意思:是否发送成功 备注:如果错误你需要获取错误码来知道为什么错误 *************************************************************************/ extern "C" __declspec(dllexport) BOOL SP_WriteComm(TCHAR *pTszBuff,DWORD *pdwLen); /************************************************************************ 函数名称:SP_GetComCount 函数功能:获取当前系统有多少COM端口 参数.一:ComName In/Out:Out 可空:N 意思:Com字符串名称
返回值
类型:int 意思:当前COM端口个数 备注:ComName会返回搜索到的最后
一个
COM端口名称,然后你可以根据序号来操作 *************************************************************************/ extern "C" __declspec(dllexport) DWORD SP_GetComCount(TCHAR *tszComNumber); //获取错误码 extern "C" __declspec(dllexport) DWORD SP_COM_GetLastError();
protobuf通过串口实现函数方法远程调用并相互回调,不使用gRPC(串口原因)
需求: 现在有函数A、B,分别在两个设备上,通过串口连接。函数
返回值
都有多个,含字节数组。
问题
: 1.protobuf只是序列化,并没有通信协议。串口无法判断发送结束及校验等。 方法:比如加个类似modbus协议:头,数据
长度
,数据,校验。 2.设备1发送函数名及参数后就阻塞,等
返回值
。如果设备2也同时同样的操作(回调函数),同时发送,怎么分辨是
返回值
还是回调函数? 方法:发送
返回值
不需要带函数名,即没函数名是
返回值
。 流程: 设备1发送函数名及参数后就阻塞,等
返回值
。设备2根据函数名
C#上位机串口编程、Modbus编程
串口(Serial Port),也称串行通讯接口(通常指COM口),
串口通信
是指将数据
一个
比特
一个
比特地逐位进行传输的通信模式。 C#
串口通信
是借助
一个
SerialPort类的对象来方便的对串口进行读写。 Modbus...
无法获取串口
返回值
java_RXTX
串口通信
java代码实现
package com.runtrial.lms.rxtx;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util....
java
中
7.0 2等于几_【Java面试】Java基础知识面试题—2020最新版!
【Java面试】Java基础知识面试题—2020最新版!发布时间:2020-08-10 12:57:04来源:ITPUB博客阅读:134作者:六星_研鑫不积跬步无以至千里,这里会不断收集和更新Java基础相关的面试题,目前已收集100题。欢迎加入我们的学习基地吧,免费获取最新BATJ面试题资料(传送门:925050116)!1.什么是B/S架构?什么是C/S架构B/S(Browser/Server...
Delphi
5,386
社区成员
262,729
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章