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

VB.NET串口通讯SerialPort1.DataReceived如何改

2012-04-10 
VB.NET串口通讯SerialPort1.DataReceived怎么改红色地方报错触发接收事件Public Sub Sp_DataReceived(By

VB.NET串口通讯SerialPort1.DataReceived怎么改
红色地方报错
''触发接收事件
  Public Sub Sp_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived  
Me.Invoke(New EventHandler(AddressOf Sp_Receiving)) '调用接收数据函数
  End Sub






[code=VB.NET][/code]Imports System
Imports System.IO.Ports
Imports System.IO.Ports.SerialPort

Public Class Form1
  Dim SerialPort1 As New SerialPort

  Private Sub Form1_Load(ByVal sender As Object, ByVal e 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
  portnamebox.Text = "COM2"
  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 = 8 '数据位
  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 Button1.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  
Me.Invoke(New EventHandler(AddressOf Sp_Receiving)) '调用接收数据函数
  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
  End If
  Catch ex As Exception
  MessageBox.Show(ex.Message)
  End Try
  End Sub

End Class

[解决办法]
报什么错啊?

热点排行