vb.net 在实现串口通讯时遇到的问题题!!!请大家帮忙!!

wangchong 2006-09-09 10:41:01
我引用 axmscomm 来实现!

代码 :
MSComm1.CommPort = 1
'文本方式读入。方式的采用与你的读卡机有关。读卡机向计算机发数据时,
'采用什么方式,你的读入方式得和读卡机的发送方式一致
MSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeText
'每到一个字节就触发一个comEvReceive事件
MSComm1.RThreshold = 1
'设置并返回波特率、奇偶校验、数据位、停止位参数。这设置必不可少
'一定要把这个参数设置对,和读卡机一致,否则接不到数据或数据错误。
MSComm1.Settings = "9600,n,8,1"
'设置一次读入整个卡号长度。
MSComm1.InputLen = 100
'打开MSCOMM端口
MSComm1.PortOpen = True

Private Sub MSComm1_OnComm(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MSComm1.OnComm
str = str & MSComm1.Input
If str.Length > 50 Then
Dim a() As String = Split(str, ",")
Dim a1() As String = Split(a(1), "GS")
Dim a2() As String = Split(a1(1), "kg")
TextBox1.Text = Trim(a2(0))
Me.Refresh()
' If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
str = ""
End If
'MsgBox(MSComm1.Input)
End Sub

问题1,有时候启动时不能启动 mscomm1的服务。 即不能触发 MSComm1_OnComm 的事件。

问题2,即使可以得到串口数据并显示在TEXTBOX1中,但如果在取串口数据的同时晃动鼠标,或者
用键盘输入数据程序就会死掉。我用断点测试发现程序只运行MSComm1_OnComm 的
str = str & MSComm1.Input 就跳出了!!

请高手帮忙 !! 非常感谢!!



...全文
436 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
GreatWall929 2006-09-16
  • 打赏
  • 举报
回复
up
alan001 2006-09-16
  • 打赏
  • 举报
回复
必须是ASCII字符(值<128),否折要Dim b() As Byte
alan001 2006-09-16
  • 打赏
  • 举报
回复
substr=Comm1.Input

timedelay 1000

str=str&substr
shibill 2006-09-14
  • 打赏
  • 举报
回复
有,世纪飞扬的串口精灵很好用,去下一个吧,不是广告哦
rl0516 2006-09-13
  • 打赏
  • 举报
回复
用SerialPort类试一下
add777 2006-09-13
  • 打赏
  • 举报
回复
好像用处不是很大???
你丫按我说的,第一个问题要是解决不成你就撞墙去把。
wangchong 2006-09-13
  • 打赏
  • 举报
回复
好像用处不是很大。请大家帮忙!!!
azyue 2006-09-13
  • 打赏
  • 举报
回复
有没有串口通讯模拟软件?
alan001 2006-09-09
  • 打赏
  • 举报
回复
Up
add777 2006-09-09
  • 打赏
  • 举报
回复
问题1:
mscomm1.RThreshold = 1
mscomm1.rtsEnable = true
问题2:
这个要单步调试。

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧