上一篇帖子介绍了VB2005中SerialPort的基本用法,需要注意的是WriteLine是在发送字符串后加了个换行符(vbLf),ReadLine接收时遇到换行符接收才结束。IsOpen的用法只能判断用open方法打开的串口,其他程序已打开的串口是无法判断的,所以判断未使用的串口还要用try或on error的方法判断。
WW.W_PLCJS_COM-PLC-技.术_网
上位机和单片机通信用16进制比较多,下面是16进制通信的例子,数据发送用Write,数据接收用ReadByte。
——可——编——程——控-制-器-技——术——门——户
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
Imports System.IO.Ports 使用SerialPort所引用的命名空间
WW.W_PLC※JS_C,OM-PL,C-技.术_网
Public Class Form1
——可——编——程——控-制-器-技——术——门——户
Dim fx() As Byte 待发送数据数组WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
Dim Rc() As Byte 接收数据数组WWW.PLCJS.COM——可编程控制器技术门户
WWW_PL※CJS_COM-PLC-技.术_网
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Clickplcjs.技.术_网
If Button1.Text = "打开串口" Thenplcjs.技.术_网
SerialPort1.PortName = "COM1"WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
SerialPort1.Open() 串口打开与关闭WWW_P※LCJS_COM-PLC-)技.术_网
Button1.Text = "关闭串口"plcjs.技.术_网
Button2.Enabled = TrueWWW_PLCJS@_COM%-PLC-技.术_网
Timer1.Enabled = TrueWWW_PLCJS_COM-PLC-技.术_网
ElseP_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
If SerialPort1.IsOpen Then SerialPort1.Close()WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
Button1.Text = "打开串口"P.L.C.技.术.网——可编程控制器技术门户
Timer1.Enabled = FalseWWW_PLCJS_COM-PLC-技.术_网
Button2.Enabled = FalseWWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
End IfWWW_PLC※JS_COM-PmLC-技.术_网
End Sub
plcjs.技.术_网
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
待发送数据处理与发送WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.ClickWW.W_PLC※JS_C,OM-PL,C-技.术_网
Dim i As IntegerWW.W_PLCJS_COM-PLC-技.术_网
Dim n As IntegerWWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
Dim Cmd As String = TextBox1.Textplcjs.技.术_网
n = Len(Cmd) \ 2WWW_PLCJS@_COM%-PLC-技.术_网
ReDim fx(n)WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
For i = 1 To nWWW_P※LCJS_COM-PLC-)技.术_网
fx(i) = CByte("&H" & Mid(Cmd, 2 * i - 1, 2))WWW_P※LCJS_CO※M-PLC-技-.术_网
NextWWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
SerialPort1.Write(fx, 1, n) 发送数组fx第1到n数据——可——编——程——控-制-器-技——术——门——户
End SubWWW_P※LCJS_COM-PLC-)技.术_网
WWW_P※LCJS_COM-PLC-)技.术_网
数据定时接收与显示WWW_P※LCJS_CO※M-PLC-技-.术_网
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.TickP.L.C.技.术.网——可编程控制器技术门户
Dim StrRc As StringWWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
Dim i As IntegerWWcW_PLCJS_COM-PLC-技.术_网
Dim n As IntegerWWW_PLCJS_COM-PLC-技.术_网
n = SerialPort1.BytesToRead 读缓冲区数据量,有数据则接收plcjs.技.术_网