首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

串口有关问题~进来帮忙看看

2012-01-28 
串口问题~~~~~~进来帮忙看看大家好!!!!!!!!!!!!!!!如何实现把数显表上的数据通过数据线连接到电脑显示出来

串口问题~~~~~~进来帮忙看看
大家好!!!!!!!!!!!!!!!
如何实现把数显表上的数据通过数据线连接到电脑显示出来~~~~~~~ 
功能如下图 





[解决办法]
具体按照硬件的通讯协议,用 Microsoft Winsock Control 6.0 控件进行通讯。
[解决办法]
就如上所说,用mscomm控件,依照通讯协议,间隔一段时间不停的去读取数据,或者是数据表支持自动发送数据,在oncomm事件中接收并处理显示出来。
[解决办法]

先用网上下载的串口调试工具确认你的底层发送数据正确,再考虑上层程序的问题。

[解决办法]

探讨
第一个ASCII码是符号位表示数据的正负值;第二到第八个ASCII码是表示数据

[解决办法]
再多嘴一句,楼主最好选用16进制方式通信试一试,可以把通信结果放上来,我们帮你分析分析。
http://download.csdn.net/source/1441583
[解决办法]
你的第二字节总是 00,应该用二进制方式接收。
VB code
Private Sub Form_Load()     MSComm1.CommPort = 1     MSComm1.Settings = "9600, n, 8, 1"     MSComm1.RThreshold = 10     MSComm1.InputMode = comInputModeBinary    MSComm1.PortOpen = True End Sub Private Sub MSComm1_OnComm()     Dim inputbuffer As Variant    Dim data As String    Select Case MSComm1.CommEvent         Case comEvReceive             inputbuffer = MSComm1.Input()             data = StrConv(inputbuffer, vbUnicode)            textcom1.Text = Left$(data,1) & CStr(Val(Mid$(Data, 3, 6))/100)    End Select End Sub
[解决办法]
A)你收到的数据不一定只有这10个字节的数据,可能有其他数据产生了干扰
B)也许数据传输太快,在触发 OnComm 到调用 Input() 中间又收到后续数据,导致没有按10字节进行拆分。在 Form_Load 中添加如下设置
VB code
MSComm1.InputLen = 10
[解决办法]
看了你所说的通信协议和你通过串口调试器所得到的数据,你接受到的数据侦应该是:
2B 00 30 30 30 39 35 31 0D 12
ASCII码 字符
第一位: 2B +
第二位: 00 无
第三位: 30 0
第四位: 30 0
第五位: 30 0
第六位: 39 9
第七位: 35 5
第八位: 31 1
第九位: 0D 无法表示
第十位: 12 无法表示

其中:第九位和第十位就是楼主所说的:13 和 18 表示确认,这个没有问题。
现在的关键点是怎么通过第二位到第八位来构建你的数据?只要搞清楚这个问题就可以解决问题了。
[解决办法]
如何显示是格式化的问题
VB code
Dim dblValue As DoubledblValue = Val(Left$(Data, 1) & "1") * Val(Mid$(Data, 3, 6)) / 100textcom1.Text = FormatNumber(dblValue, , vbTrue) 

热点排行