IO.Ports使用

tanghuiming 2009-02-21 10:24:42
请教大家,谁有使用IO.Ports类读单片机信息的经验,比如说,我有一个单片机,用COM口与电脑相连,我要读这个单片机的信息,请教大家代码应该怎么写,哪位有这样的经验,请把代码贴出来,谢谢了!
...全文
346 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zdingyun 2009-03-03
  • 打赏
  • 举报
回复
邮件已发
tanghuiming 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zdingyun 的回复:]
http://www.vbgood.com/viewthread.php?tid=81845&extra=page%3D1
LZ:VB.NET2008做的工程压缩文件可在上述链接下载.
[/Quote]


Thank you so much!
我在VBGOOD没有注册帐号,你能否EMAIL给我,thm0908@163.com,再次感谢!
zdingyun 2009-03-01
  • 打赏
  • 举报
回复
http://www.vbgood.com/viewthread.php?tid=81845&extra=page%3D1
LZ:VB.NET2008做的工程压缩文件可在上述链接下载.
dai78 2009-02-28
  • 打赏
  • 举报
回复
haha
zdingyun 2009-02-27
  • 打赏
  • 举报
回复
LZ:
TxtSend是个文本框控件,给出的代码是VB.NET2008使用SERIALPORT组件
你可提供EMAIL,我给你发整个工程文件。
tanghuiming 2009-02-26
  • 打赏
  • 举报
回复
兄弟,以上代码有些地方有错误,请指点,谢谢。
错误 1 未声明名称“TxtSend”。 C:\Documents and Settings\Jtang\Local Settings\Application Data\Temporary Projects\ReadCom\Form1.vb 14 9 ReadCom
错误 2 “Redim”语句需要数组。 C:\Documents and Settings\Jtang\Local Settings\Application Data\Temporary Projects\ReadCom\Form1.vb 21 15 ReadCom
错误 3 重载决策失败,原因是没有可访问的“Read”可以用这些参数调用:
'Public Function Read(buffer() As Char, offset As Integer, count As Integer) As Integer': 类型“Byte”的值无法转换为“Char 的 1 维数组”。
'Public Function Read(buffer() As Byte, offset As Integer, count As Integer) As Integer': 类型“Byte”的值无法转换为“Byte 的 1 维数组”。 C:\Documents and Settings\Jtang\Local Settings\Application Data\Temporary Projects\ReadCom\Form1.vb 22 9 ReadCom
错误 4 类型“Byte”的值无法转换为“System.Array”。 C:\Documents and Settings\Jtang\Local Settings\Application Data\Temporary Projects\ReadCom\Form1.vb 31 29 ReadCom
错误 5 表达式不是数组或方法,不能具有参数列表。 C:\Documents and Settings\Jtang\Local Settings\Application Data\Temporary Projects\ReadCom\Form1.vb 32 37 ReadCom
错误 6 表达式不是数组或方法,不能具有参数列表。 C:\Documents and Settings\Jtang\Local Settings\Application Data\Temporary Projects\ReadCom\Form1.vb 32 60 ReadCom
错误 7 表达式不是数组或方法,不能具有参数列表。 C:\Documents and Settings\Jtang\Local Settings\Application Data\Temporary Projects\ReadCom\Form1.vb 32 85 ReadCom
zdingyun 2009-02-22
  • 打赏
  • 举报
回复
VB.NET2003使用MSCOMM控件
    
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AxMSComm1.Settings = "9600,N,8,1"
AxMSComm1.RThreshold = 1
AxMSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeBinary
AxMSComm1.PortOpen = True
End Sub

Private Sub AxMSComm1_OnComm(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AxMSComm1.OnComm
Dim bytInput() As Byte
Dim intInputLen As Integer
Select Case AxMSComm1.CommEvent
'Case comEvReceive
Case 2
'此处添加处理接收的代码
'AxMSComm1.InputMode = comInputModeBinary '二进制接收
intInputLen = AxMSComm1.InBufferCount
ReDim bytInput(intInputLen)
bytInput = AxMSComm1.Input
Dim i As Integer
For i = 0 To UBound(bytInput)
If Len(Hex(bytInput(i))) = 1 Then
strData = strData & "0" & Hex(bytInput(i))
Else
strData = strData & Hex(bytInput(i))
End If
Next
'If Mid(strData, 17, 2) = "20" And Mid(strData, 19, 2) = "20" And Len(strData) = 20 Then
TextBox1.Text = strData
strData = ""
'End If
End Select

End Sub

VB.NET2008使用SERIALPORT组件
Public Class Form1
Dim mSTR As String
Dim strData As String
Dim strDat As String
'Dim mSize1 As Integer
Dim mRecvByte() As Byte
Dim Hexsj As String
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim mSize As Integer = Me.SerialPort1.BytesToRead
'mSize1 = mSize
ReDim mRecvByte(mSize - 1)
SerialPort1.Read(mRecvByte, 0, mSize)
'mSTR = Encoding.Default.GetString(mRecvByte, 0, mSize)
BeginInvoke(New EventHandler(AddressOf ONMLoadA), SerialPort1.BytesToRead()) '使用委托方式显示接收到的字符串
End Sub
Sub ONMLoadA(ByVal sender As System.Object, ByVal e As System.EventArgs) '委托
'TextBox4.Text = mSTR
Dim i As Integer
For i = 0 To UBound(mRecvByte) 'mSize - 1
strData = strData & IIf(mRecvByte(i) > 15, Hex(mRecvByte(i)), "0" & Hex(mRecvByte(i)))
Next
Dim sj As Byte
For i = 1 To Len(strData) Step 2 '处理为ASCII字符
sj = Val("&H" & Mid(strData, i, 2))
If sj < 32 Or sj > 128 Then '当接收字节中有Chr(0)时,其后字符被切割
strDat = strDat & "."
Else
strDat = strDat & Chr(sj)
End If
Next
TextBox1.Text = strDat '显示字符
TextBox2.Text = strData '显示为16进制
TextBox3.Text = Len(strData) / 2
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SerialPort1.BaudRate = 9600 '波特率设为
SerialPort1.PortName = "com1" '端口为串口
SerialPort1.ReceivedBytesThreshold = 1
If SerialPort1.IsOpen = False Then SerialPort1.Open() '打开串口
Hexsj = "002702013524200239892700020020010201E9030D07"
TxtSend.Text = Hexsj
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
strData = ""
strDat = ""
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim bytHex() As Byte
ReDim bytHex((Len(Hexsj) \ 2) - 1)
Dim i As Integer
For i = 1 To Len(Hexsj) Step 2
bytHex((i - 1) / 2) = Val("&H" & Mid(Hexsj, i, 2))
Next
SerialPort1.Write(bytHex, 0, bytHex.Length)
End Sub
End Class

16,554

社区成员

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

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