VB.NET连扫码枪

程序是从网上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.ObjectByVal As System.EventArgs) Handles MyBase.Load

        '获取计算机有效串口

        Dim ports As String() = SerialPort.GetPortNames() '必须用命名空间,用SerialPort,获取计算机的有效串口

        Dim port As String

        For Each port In ports

            portnamebox.Items.Add(port) '向combobox中添加项

        Next port

        '初始化界面

        baudratebox.SelectedIndex = 2

 

 

 

        portnamebox.SelectedIndex = 0

        Serial_Port1() '初始化串口

        Label3.Text = SerialPort1.IsOpen

        statuslabel.Text = "串口未连接"

        statuslabel.ForeColor = Color.Red

        sendbox.Text = "123"

        ' baudratebox.Text = baudratebox.Items(0) 注释和不注释的地方可以替换

        'portnamebox.Text = portnamebox.Items(0)

    End Sub

 

    Private Sub Serial_Port1() '设置串口参数

        SerialPort1.BaudRate = Val(baudratebox.Text) '波特率

        SerialPort1.PortName = portnamebox.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.ObjectByVal 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.ObjectByVal 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.ObjectByVal 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 ObjectByVal As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

        Me.Invoke(New EventHandler(AddressOf Sp_Receiving)) '调用接收数据函数

    End Sub

 

    '接收数据

    Private Sub Sp_Receiving(ByVal sender As ObjectByVal 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

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值