Imports System
泉州網站制作公司哪家好,找創新互聯公司!從網頁設計、網站建設、微信開發、APP開發、響應式網站設計等網站項目制作,到程序開發,運營維護。創新互聯公司公司2013年成立到現在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選創新互聯公司。
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 ports As String() = SerialPort.GetPortNames() '必須用命名空間,用SerialPort,獲取計算機的有效串口
Dim port As String
For Each port In ports
portnamebox.Items.Add(port) '向combobox中添加項
Next port
'初始化界面
關于串口通訊的問題:
很明顯,你還不知道(不會、不習慣)使用事件驅動的方式接收數據。
建議你仔細看看串口組件(無論VB6還是VB.net)的OnComm事件,你的問題很容易解決。
關于以太網通訊:
在TCP通訊中端口確實可以重用,你百度一下“TCP端口重用”能查到很多示例。
但絕大多數情況下不推薦端口重用,而應該采取服務器端建立連接池的方法。
或者,干脆不用TCP,用UDP解決也可以。
不是很明白你的題意
strHex = strHex + [String].Format("{0:X2} "
這里的意思是把每個字節數據轉換成了十六進制,每個字節占兩個字符
如果你串口收到的4個字節數據:43,27,56,200
那么你的結果是:2B1B38C8
即receivebytes.Text="2B1B38C8"
不足兩位的補0
如果你串口收到的4個字節數據:3,27,56,200
那么你的結果是:031B38C8
即receivebytes.Text="031B38C8"
首先:
textbox里沒有顯示,是因為SerialPort1和TextBox2不是同一線程創建的,需要跨線程操作。需要用到委托,這樣才能顯示出來。
其次:
我覺得用串口的接收數據事件更好一些。
下面代碼供參考:
'----------------------
'串口接收數據事件,其實比用定時器更好,
'觸發事件的條件可以自己在form_load中設置ReceivedBytesThreshold屬性數值,默認為ReceivedBytesThreshold=1
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim strRecvData As String = ""
strRecvData = SerialPort1.ReadExisting
Call disPlayComData(strRecvData)
End Sub
Delegate Sub callback(ByVal strT As String) '定義委托
Sub showString(ByVal comdata As String) '顯示結果
Me.TextBox1.Text = "結果:" comdata
End Sub
Sub disPlayComData(ByVal strTmp As String) '判定是否為跨線程
If Me.TextBox1.InvokeRequired Then
Dim d As New callback(AddressOf showString)
Me.Invoke(d, New Object() {strTmp})
Else
Me.TextBox1.Text = strTmp
End If
End Sub
可以將Form1里的串口公開,然后在Form2里添加對DataReceived事件的處理
Form1.Designer.cs中將
private System.IO.Ports.SerialPort port;改為
publice System.IO.Ports.SerialPort port;
然后在Form2里加上
Form1.port.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(port_DataReceived);
最后在
void port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
在這里進行處理就可以了;
}
這個是C#的,VB的你自己轉一下
網頁題目:vb.net訪問串口,vbnet串口通信如何編寫
URL網址:http://m.kartarina.com/article4/hddjoe.html
成都網站建設公司_創新互聯,為您提供做網站、標簽優化、企業網站制作、App設計、關鍵詞優化、品牌網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯