程序是从网上copy的。还没有真正看串口的使用方式,已经成功连接并读取数据。
收获: 1) comBox.selectedindex=0'选择comBox里面的Item的索引
2)在Form1中加入serial1或使用 dim serialport1 as serialport
3)扫码枪上读取的值为Char, TextBox里面的最大的值为int32。不知道为什么一开始扫到的值在textBox分成了两行,后来不知道扫码枪怎么了就变成了一行,疑问!!
4)读取电脑上的串口serialport.getportnames()直接得到设备连到了那个串口,如果串口上只连了一个设备的话。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
Imports
System
Imports
System.IO.Ports
Public
Class
Form1
Private
Sub
Form1_Load(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
MyBase
.Load
'获取计算机有效串口
Dim
port
As
String
For
Each
port
In
ports
Next
port
'初始化界面
baudrateBox.SelectedIndex = 2
portnameBox.SelectedIndex = 0
Serial_Port1()
'初始化串口
Label3.Text = SerialPort1.IsOpen
statuslabel.Text =
"串口未连接"
statuslabel.ForeColor = Color.Red
sendBox.Text =
"123"
End
Sub
Private
Sub
Serial_Port1()
'设置串口参数
SerialPort1.BaudRate = Val(baudrateBox.Text)
'波特率
SerialPort1.DataBits = 7
'数据位
SerialPort1.StopBits = IO.Ports.StopBits.One
'停止位
SerialPort1.Parity = IO.Ports.Parity.None
'校验位
End
Sub
'关闭串口连接
Private
Sub
closebtn_Click(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
closebtn.Click
Try
SerialPort1.Close()
'关闭串口
Label3.Text = SerialPort1.IsOpen
If
SerialPort1.IsOpen =
False
Then
Statuslabel.Text =
"串口未连接"
Statuslabel.ForeColor = Color.Red
receiveBox.Text =
""
receivebytes.Text =
""
End
If
Catch
ex
As
Exception
MessageBox.Show(ex.Message)
End
Try
End
Sub
'打开串口连接
Private
Sub
openbtn_Click(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
openbtn.Click
Try
SerialPort1.Open()
'打开串口
Label3.Text = SerialPort1.IsOpen
If
SerialPort1.IsOpen =
True
Then
statuslabel.Text =
"串口已连接"
statuslabel.ForeColor = Color.Green
End
If
Catch
ex
As
Exception
MessageBox.Show(ex.Message)
End
Try
End
Sub
'发送数据
Private
Sub
Button1_Click(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
closebtn.Click
Try
SerialPort1.Write(sendBox.Text)
Catch
ex
As
Exception
MessageBox.Show(ex.Message)
End
Try
End
Sub
'触发接收事件
Public
Sub
Sp_DataReceived(
ByVal
sender
As
Object
,
ByVal
e
As
System.IO.Ports.SerialDataReceivedEventArgs)
Handles
SerialPort1.DataReceived
End
Sub
'接收数据
Private
Sub
Sp_Receiving(
ByVal
sender
As
Object
,
ByVal
e
As
EventArgs)
Dim
strIncoming
As
String
Try
receivebytes.Text = Str(Val(receivebytes.Text) + SerialPort1.BytesToRead)
If
SerialPort1.BytesToRead > 0
Then
Threading.Thread.Sleep(100)
'添加的延时
strIncoming = SerialPort1.ReadExisting.ToString
'读取缓冲区中的数据
SerialPort1.DiscardInBuffer()
receiveBox.Text = strIncoming
listBox1.Items.Add(strIncoming)
End
If
Catch
ex
As
Exception
MessageBox.Show(ex.Message)
End
Try
End
Sub
End
Class
|