以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 串口接收会延迟一次 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=175244) |
-- 作者:shyilin -- 发布时间:2022/2/25 8:56:00 -- 串口接收会延迟一次 Dim str As String Dim drp As Row = Tables("INT").Current If Ports(drp("串口号")).IsOpen Then Dim fsstr1 As String="175654854455555" Functions.Execute("sendstr",fsstr1,drp("串口号")) Dim cnt As Integer = Ports(drp("串口号")).BytesToRead \'msgbox(cnt1) \'If cnt1=cnt Then \'缓冲区是否有数 Dim rval(cnt - 1) As Byte Ports(drp("串口号")).Read(rval,0,cnt) str =BitConverter.ToString(rval).Replace("-", "") msgbox(str) ’这个接收到的数据是第二次接收到的数据 Dim dr1 As DataRow =DataTables("日志信息").AddNew dr1("记录信息")="【接收数据】" & str dr1("记录时间")=Format(Date.Now, "G") dr1.Save Tables("日志信息").Sort = "记录时间 desc" Tables("日志信息").Select(0,0) Else Forms("int").Open End If 这个是什么原因吗?有什么办法解决吗?
|
-- 作者:有点蓝 -- 发布时间:2022/2/25 9:05:00 -- 代码写在哪里的?调用的函数代码发上来 DataReceived事件有没有代码? |
-- 作者:shyilin -- 发布时间:2022/2/25 12:20:00 -- DataReceived事件里面没有代码 直接Ports(drp("串口号"))引用的,每次读出来的数据都是上一条接收到的数据 |
-- 作者:shyilin -- 发布时间:2022/2/25 12:22:00 -- Functions.Execute("sendstr")这个的代码 Dim sendstr As String = Args(0) Dim sendcom As String = Args(1)If sendstr.Contains(" ") Then sendstr= sendstr.Replace(" ","") End If Dim aaff(sendstr.Length/2-1) As uInteger \'CRC验证码 For i As Integer = 0 To sendstr.Length/2-1 aaff(i) = Convert.ToInt32("0x" & sendstr.Substring(i * 2, 2),16) Next Dim bb As String = Convert.ToString(CRC16(aaff, aaff.Length), 16).ToUpper().PadLeft(4,"0") bb = bb.SubString(2.2) & bb.SubString(0,2) sendstr= sendstr & bb Dim dr1 As DataRow =DataTables("日志信息").AddNew dr1("记录信息")="【发送数据】" & sendstr dr1("记录时间")= Format(Date.Now, "G") dr1.Save Tables("日志信息").Sort = "记录时间 desc" Tables("日志信息").Select(0,0) Dim bytes2(sendstr.Length/2-1) As Byte For i As Integer = 0 To sendstr.Length/2-1 bytes2(i) ="&H" & sendstr.Substring(i * 2, 2) Next If Ports(sendcom).IsOpen Then Ports(sendcom).Write(bytes2,0,bytes2.length) Else msgbox("请打开端口或者端口丢失") Forms("int").Open End If |
-- 作者:有点蓝 -- 发布时间:2022/2/25 13:39:00 -- 试试到DataReceived事件能不能接收完整的数据 看看接口文档是不是有什么设置漏了
|
-- 作者:shyilin -- 发布时间:2022/2/25 20:28:00 -- 在DataReceived事件能实时接收数据,但是也遇到一个问题 给设备发送命令,设备返回命令有断断续续的,就要设置cnt 感觉这样不够直接 太麻烦了,老师能帮忙找找原因吗? |
-- 作者:有点蓝 -- 发布时间:2022/2/26 9:01:00 -- 没有设备测试,没法找呀。仔细看看设备的开发文档,根据人家的要求接收数据,什么直接不直接的,功能先做出来,再考虑优化 |
-- 作者:playmal -- 发布时间:2023/11/20 10:54:00 -- 这个问题一直都有,没有解决 |
-- 作者:playmal -- 发布时间:2023/11/20 10:55:00 -- 我现在也遇到这个问题了,也是每次读出来的数据都是上一条接收到的数据 |