问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于DELPHI的串口通讯问题。读取数组的问题。

发布网友 发布时间:2022-04-30 04:36

我来回答

2个回答

热心网友 时间:2023-10-13 05:15

你读出来的是一个整型,这是对的。注意,你定义的Arr1数组长度为5字节了。下面是我写的测试代码,显示的结果就是13761317:
//我这里字节和你说的反过来了,不知道是不是你弄错了还是你读出来的就是反的,如果读出来就是反的需要自己处理一下
var Arr1:Array[0..3] of byte;
begin
Arr1[0]:=37;
Arr1[1]:=251;
Arr1[2]:=209;
Arr1[3]:=0;
Showmessage(inttostr(PInteger(@Arr1)^));
end;
显示的结果正是你要的结果13761317,所以你把数据读到Arr1数组以后,需要通过PInteger指针类型转成整型,就行了,如下:
PInteger(@Arr1)^追问0xCEA4 ,我的题目没有错,是这样的顺序,

追答如果是这样的顺序,自己把字节反转然后象我说的用PInteger转成整型就可以了,看我测试的代码还没看出规率吗

热心网友 时间:2023-10-13 05:16

d等于接收字节长度有利接收正确率提高.由于你的几个下位机返回数据包字节不等长,你可根据寻址命令发出前预先改变Rthreshold值来保证接收返回符合要求的字节长度.
不然你接收多少字节符合你改发下一寻址命令呢?程序代码处理难度较高.
实际下位机返回数据包可在其代码中补一定其它字节来达到等长,从而使接收代码变得简洁.
等长接收数据后可对接收处理清0来等待下次接收.
补充:
假如下位机的返回数据按地址号能确定接收字节长度,下列代码可实现接收不等长数据,仅供参考:
Private Sub MSComm1_OnComm()
On Error Resume Next
Dim BytReceived() As Byte
Dim strBuff As String
Dim strData As String
Dim i As Integer
Dim x As Integer
Select Case MSComm1.CommEvent
Case 2
MSComm1.InputLen = 0
strBuff = MSComm1.Input
BytReceived() = strBuff
For i = 0 To UBound(BytReceived)
If Len(Hex(BytReceived(i))) = 1 Then
strData = strData & "0" & Hex(BytReceived(i))
Else
strData = strData & Hex(BytReceived(i))
End If
Next
Text3 = Text3 + strData
If Left(strData, 2) = "00" And Len(strData) = 8 Then
Text1(0).Text = Left(strData, 8)
Call DataClear
ElseIf Left(strData, 2) = "01" And Len(strData) = 10 Then
Text1(1).Text = Left(strData, 10)
Call DataClear
End If
End Select
End Sub

Public Sub DataClear()
MSComm1.OutBufferCount = 0 '清空发送缓冲区
MSComm1.InBufferCount = 0
Text3 = ""
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 1 'COM端口
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputMode = comInputModeBinary '采用二进制传输
MSComm1.InBufferCount = 0 '清空接受缓冲区
MSComm1.OutBufferCount = 0 '清空传输缓冲区
'MSComm1.SThreshold = 1 '如果传输缓冲区完全空时产生MSComm事件
MSComm1.RThreshold = 1 '不产生MSComm事件
MSComm1.PortOpen = True
Text3 = "" '打开端口
End Sub追问s2omzllwg ,VB我看不懂。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 excel 中的求和问题 南通市启东喷砂机除锈效果好的? 幸会幸会后面接什么 伪装者阿诚到底最后死没死 如何用Delphi实现串口通信,如何批量的采集多个传感器信号 “兄”组词有哪些? 与其到处...不如深入一点,需要一个什么成语? 有没有质量好价格低的喷砂除锈设备?求推荐 到底是长须鲸大还是平滑侧齿龙!! 怎么写论文:基于DELPHI的串口通信 我自称小弟,收下愚兄的礼物。用古文怎么说? DELPHI mscomm串口通信加延迟sleep()的作用 这是什么生物 ?两厘米长 比牙签还细 贤弟是什么意思 错嫁一生的分集剧情 求DELPHI编写串口通讯程序的简单例子 用MSComm控件的 要详细的刚学delphi的就能看懂的那种 洛阳喷砂除锈哪家好 想看电视剧阿诚的分集介绍 2腰10几几是围尺 delphi的串口问题 一个孩子叫王志成是什么电视剧? delphi 串口通信数制转换问题 DELPHI写程序与有RS232串口的仪器通信 阿诚电视剧免费观看大结局 石棉板的隔热效果好吗?需要多厚才能起作用? 台湾阿诚的介绍 Delphi串口通信 发送不了 0x11 0x13 m2螺母尺寸标准是多少 荣耀note10怎么改默认存储位置 伪装者阿诚扮演者是谁?阿诚最后结局是什么 2mm石棉板耐压多少 不同压力段的管道连接各用什么连接方式?其工艺要求为什么?压力段为0-3.2MPa,3.2MPa-6.4MPa等 急求电视剧<阿诚>分集介绍 荣耀note10自带的备份更新时,它的图标不见了。怎样找回? 石棉使用厚度 阿诚为什么要冲进火海 机械零件密封用的纸垫是什么材料,为什么有的用1mm有的用2默mm厚的,请问如何选择厚度 荣耀note10 插SD卡 初始正常 连接电脑后不识别了 石棉板材的密度是多少? 喷砂,真空镀膜,喷漆哪个表面处理比较好?喷砂是什么意思,效果是什么?为什么有的电镀铬前也要喷砂??