導航:首頁 > 信息系統 > 串口輸出信息如何獲取

串口輸出信息如何獲取

發布時間:2023-03-18 10:12:16

『壹』 如何讀取串口設備返回的數據

首先,串口設備一般都是獨享的,如果你用screen打開了,那麼可能所有的接收到的信息會都傳向screen,你的串口即使能打開,也未必有數據。
其次,從PC角度來看,串口接收確實是read()函數,不需要額外的函數的,至於中斷之類的對於你上位機編程不知道也無所謂。一般串口接收會用一個單獨的線程,建議樓主也是用另一個線程來接收
第三,關於串口的設置。謹慎猜測一下,對於這種定位設備,即使你不去設置它,它可能也會定期的輸出數據的,這是從設備易用性角度猜的。所以,可能,你之前盡管認為你的串口寫是有效的,實際未必。這里就涉及到串口的設置問題,最常見的設置如115200bps, 8N1格式,這些還是需要你在串口打開後設置的,具體設置的方法網上一堆,你可以根據你的編譯環境查一下。針對你的設備,還是要建議你看一下設備手冊

『貳』 如何在QT中讀取串口數據

一、文件下載
文件下載地址:
也可以下載我上傳到網盤上的:
二、文件內容介紹
1.下載到的文件為qextserialport-1.2win-alpha ,解壓並打開後其內容如下。
(點擊圖片可以查看清晰大圖)
下面分別介紹:
(1)doc文件夾中的文件內容是QextSerialPort類和QextBaseType的簡單的說明,我們可以使用記事本程序將它們打開。
(2)examples文件夾中是幾個例子程序,可以看一下它的源碼,不過想運行它們好像會出很多問題啊。
(3)芹高手html文件夾中是QextSerialPort類的使用文檔。
(4)然後就是剩下的幾個文件了。其中qextserialenumerator.cpp及qextserialenumerator.h文件中定
義的QextSerialEnumerator類是用來獲取平台上可用的串口信息的。不過,這個類好像並不怎麼好用,而且它不是我們關注的重點,所以下面
就不再介紹它了。
(5)qextserialbase.cpp和qextserialbase.h文件定義了一個QextSerialBase
類,win_qextserialport.cpp和win_qextserialport.h文件定義了一個Win_QextSerialPort
類,posix_qextserialport.cpp和posix_qextserialport.h文件定義了一個
Posix_QextSerialPort類,qextserialport.cpp和qextserialport.h文件定義了一個
QextSerialPort類。這個QextSerialPort類就是我們上面所說的那個,它是所有這些類的子類,是最高的抽象,它屏蔽了平台特徵,
使得在任何平台上都可以使用它。
2.幾個類的簡單介紹。
下面是這幾個類的關系圖。
可以看到它們都繼承自QIODevice類,所以該類的一些函數我們也可以直接來使用。圖中還有一個QextBaseType類,其實它只是一個標
識,沒有具體的內容,它用來表示Win_QextSerialPort或Posix_QextSerialPort
中的一個類,因為在QextSerialPort類中使用了條件編譯,所以QextSerialPort類既可以繼承自
Win_QextSerialPort類,也可以繼承自Posix_QextSerialPort類,所以使用了QextBaseType來表示。這一點
我們可以在qextserialport.h文件中看到。再說QextSerialPort類,其實它只是為了方便程序的跨平台編譯,使用它可以在不同的
平台上,根據不同的條件編譯繼承不同的類。所以它只是一個抽象,提供了幾個構造函數而已,並沒有具體的內容。在qextserialport.h文件中的
條件編譯內容如下:
#ifdef_TTY_POSIX_
#include「posix_qextserialport.h」
#define QextBaseTypePosix_QextSerialPort
#else
#include「win_qextserialport.h」
#define QextBaseTypeWin_QextSerialPort
#endif
所以,其實我們沒有必要使用這念啟個類,直接使用Win_QextSerialPort或Posix_QextSerialPort就可以了。當然如果
你想使用這個類,實現同樣的源程序可以直接在Windows和Linux下編譯運行,那麼一定要注意在Linux下這里需要添加
#define _TTY_POSIX_ 。而我們這里為了使得程序更明嫌嫌了,所以沒有使用該類,下面也就不再介紹它了。
QextSerialBase類繼承自QIODevice類,它提供了操作串口所必需的一些變數和函數等,而
Win_QextSerialPort和Posix_QextSerialPort均繼承自QextSerialBase
類,Win_QextSerialPort類添加了Windows平台下操作串口的一些功能,Posix_QextSerialPort類添加了
Linux平台下操作串口的一些功能。所以說,在Windows下我們使用Win_QextSerialPort類,在Linux下我們使用
Posix_QextSerialPort類。
3.在QextSerialBase類中還涉及到了一個枚舉變數QueryMode。
它有兩個值Polling和EventDriven
。QueryMode指的是讀取串口的方式,下面我們稱為查詢模式,我們將Polling稱為查詢方式Polling,將EventDriven稱為事件驅動方式。
事件驅動方式EventDriven就是使用事件處理串口的讀取,一旦有數據到來,就會發出readyRead()信號,我們可以關聯該信號來讀取串口的數據。在事件驅動的方式下,串口的讀寫是非同步的,調用讀寫函數會立即返回,它們不會凍結調用線程。
而查詢方式Polling則不同,讀寫函數是同步執行的,信號不能工作在這種模式下,而且有些功能也無法實現。但是這種模式下的開銷較小。我們需要自己建立定時器來讀取串口的數據。
在Windows下支持以上兩種模式,而在Linux下只支持Polling模式。
三、小結。
這里講了這么多,最後要說的只是,我們在Qt中使用這個類編寫串口程序,根據平台的不同只需要分別使用四個文件。

『叄』 如何在web頁面上獲取客戶端的串口數據

web頁面上獲取客戶端的串口數據的方法:

可以寫一個串口代理程序,讀取本地串口,將獲取到的數據存入資料庫。web通過ajax+定時器獲取資料庫中的數據顯示就好了。

如果要交互,可以搞一個讓上面提到的串口程序開一個socket.將串口通信獲取的數據,通過socket發出去,web頁面可以用websocket。

下面一個通過flash操作ardiuno的demo.用的是類似於第二種交互的方法。只不過用的是ActionScript.原理是一樣的。

串列介面是一種可以將接收來自CPU的並行數據字元轉換為連續的串列數據流發送出去,同時可將接收的串列數據流轉換為並行的數據字元供給CPU的器件。一般完成這種功能的電路,我們稱為串列介面電路。

串口通信(Serial Communications)的概念非常簡單,串口按位(bit)發送和接收位元組的通信方式。

注意事項:

戶端的系統數據如果能隨便被web頁面讀取,那大家也不敢隨便打開網頁了,至於說用IE的ActiveX 控制項,這個也沒有前途,IE默認不開啟,現在有IE的也沒什麼人,當然如果是用於特定客戶的話可以了,反正你想幹嘛就幹嘛。



『肆』 設備通過串口輸出信息如何獲取輸出的內容

首先,你串口信息的獲取是雙向的,
電腦對電腦,或電腦對單片機,
串口的收哪銷鎮發都是按照設備的協議要斗轎求來做的,
如果協議相符,設備就會做出相應,
在電腦李粗端,可以採用通用軟體完成顯示,
也可以根據需要,自己編制軟體完成,
總之,根據你控制和顯示的要求,力求簡單快捷

『伍』 C#如何獲取USB串口設備的數據

System.IO.Ports中有一個SerialPort 類你可以研究一下
給你個代碼看看吧
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Windows;
6 using System.Windows.Controls;
7 using System.Windows.Data;
8 using System.Windows.Documents;
9 using System.Windows.Input;
10 using System.Windows.Media;
11 using System.Windows.Media.Imaging;
12 using System.Windows.Navigation;
13 using System.Windows.Shapes;
14 using System.IO.Ports;
15
16 namespace CsharpComm
17 {
18 /// <summary>
19 /// Window1.xaml 的交互邏輯
20 /// </summary>
21 public partial class Window1 : Window
22 {
23 public Window1()
24 {
25 InitializeComponent();
26 }
27
28 //定義 SerialPort對象
29 SerialPort port1;
30
31 //初始化SerialPort對象方法.PortName為COM口名稱,例如"COM1","COM2"等,注意是string類型
32 public void InitCOM(string PortName)
33 {
34 port1 = new SerialPort(PortName);
35 port1.BaudRate = 9600;//波特率
36 port1.Parity = Parity.None;//無奇偶校驗位
37 port1.StopBits = StopBits.Two;//兩個停止位
38 port1.Handshake = Handshake.RequestToSend;//控制協議
39 port1.ReceivedBytesThreshold = 4;//設置 DataReceived 事件發生前內部輸入緩沖區中的位元組數
40 port1.DataReceived += new (port1_DataReceived);//DataReceived事件委託
41 }
42
43 //DataReceived事件委託方法
44 private void port1_DataReceived(object sender, SerialDataReceivedEventArgs e)
45 {
46 try
47 {
48 StringBuilder currentline = new StringBuilder();
49 //循環接收數據
50 while (port1.BytesToRead > 0)
51 {
52 char ch = (char)port1.ReadByte();
53 currentline.Append(ch);
54 }
55 //在這里對接收到的數據進行處理
56 //
57 currentline = new StringBuilder();
58 }
59 catch(Exception ex)
60 {
61 Console.WriteLine(ex.Message.ToString());
62 }
63
64 }
65
66 //打開串口的方法
67 public void OpenPort()
68 {
69 try
70 {
71 port1.Open();
72 }
73 catch { }
74 if (port1.IsOpen)
75 {
76 Console.WriteLine("the port is opened!");
77 }
78 else
79 {
80 Console.WriteLine("failure to open the port!");
81 }
82 }
83
84 //關閉串口的方法
85 public void ClosePort()
86 {
87 port1.Close();
88 if (!port1.IsOpen)
89 {
90 Console.WriteLine("the port is already closed!");
91 }
92 }
93
94 //向串口發送數據
95 public void SendCommand(string CommandString)
96 {
97 byte[] WriteBuffer = Encoding.ASCII.GetBytes(CommandString);
98 port1.Write(WriteBuffer, 0, WriteBuffer.Length);
99 }
100
101 //調用實例
102 private void btnOpen_Click(object sender, RoutedEventArgs e)
103 {
104 //我現在用的COM1埠,按需要可改成COM2,COM3
105 InitCOM("COM1");
106 OpenPort();
107 }
108 }
109 }

『陸』 如何獲取串口數據

首先,你可以利用串口監聽工具,比如accessport,來監聽串口的交互數據,分析它每條數據的格式及涵義,然後編程模擬其收發流程,逐步實驗

『柒』 js怎樣獲取串口信息

MSCOMM控制項在VB6的企業版中有,需通過部件添加方式載入。

Private Sub MSComm_OnComm()
Dim bytInput() As Byte
Dim intInputLen As Integer
Select Case frmMain.ctrMSComm.CommEvent
Case comEvReceive
If blnReceiveFlag Then
If Not frmMain.ctrMSComm.PortOpen Then
frmMain.ctrMSComm.CommPort = intPort
frmMain.ctrMSComm.Settings = strSet
frmMain.ctrMSComm.PortOpen = True
End If
'此處添加處理接收的代碼
frmMain.ctrMSComm.InputMode = comInputModeText '按ASCII接收
intInputLen = frmMain.ctrMSComm.InBufferCount
ReDim bytInput(intInputLen)
bytInput = frmMain.ctrMSComm.Input
Text1 = bytInput
Text2 = Text1
jscd = Len(Text1)
If Left(Text1, 1) <> Chr(27) Or jscd > 25 Then '
frmMain.Label3.BackColor = vbRed
frmMain.Label3.ForeColor = vbWhite
frmMain.Label3.Caption = "接收信號出錯!"
ElseIf Left(Text2, 1) = Chr(27) And Mid(Text2, 25, 1) = Chr(13) Then
frmMain.Label3.BackColor = vbGreen
frmMain.Label3.ForeColor = vbBlack
frmMain.Label3.Caption = "接收信號正常!"
If Left(Text2, 6) = Chr(27) & "R0032" And jscd = 25 Then
If Val(fa2) >= 0 And Len(fa2) = 4 Then
fa2 = "0" & Mid(fa2, 2, 3)
End If
frmMain.txtSend = Chr(27) & fa0 & fa1 & "9999" & zhenkong & fa2 & fa3 & fa4 & Chr(13)
lenTxtSend = Len(txtSend)
frmJishi.Label8.Caption = txtSend
frmJishi.Label11.Caption = lenTxtSend
If lenTxtSend = 24 Then
Call commFasong
Else
frmMain.Label3.BackColor = vbRed
frmMain.Label3.ForeColor = vbWhite
frmMain.Label3.Caption = "發送信號出錯!"
End If
blL1 = Mid$(Text2, 19, 2)
If blL1 = "01" Then
record_jmm(0) = Val(Mid$(Text2, 21, 4)) / 10 '製品1溫度
ElseIf blL1 = "02" Then
record_jmm(1) = Val(Mid$(Text2, 21, 4)) / 10 '製品2溫度
ElseIf blL1 = "03" Then
record_jmm(2) = Val(Mid$(Text2, 21, 4)) / 10 '製品3溫度
ElseIf blL1 = "04" Then
record_jmm(3) = Val(Mid$(Text2, 21, 4)) / 10 '製品4溫度
ElseIf blL1 = "05" Then
record_jmm(4) = Val(Mid$(Text2, 21, 4)) / 10 '製品5溫度
ElseIf blL1 = "06" Then
record_jmm(5) = Val(Mid$(Text2, 21, 4)) / 10 '製品6溫度
End If
record_jm(0) = Val(record_jmm(0))
record_jm(1) = Val(record_jmm(1))
record_jm(2) = Val(record_jmm(2))
record_jm(3) = Val(record_jmm(3))
record_jm(4) = Val(record_jmm(4))
record_jm(5) = Val(record_jmm(5))
blL = Mid$(Text2, 7, 6)
Call Hex_bin '輸出口狀態鑒別
blLg = Mid$(Text2, 13, 6)
Call hex_bin1 '輸出口故障狀態鑒別
txtSend = ""
Else
txtSend = ""
End If
End If
If Not blnAutoSendFlag And Not blnReceiveFlag Then
frmMain.ctrMSComm.PortOpen = False
End If
End If
End Select
End Sub

以上是一段MSCOMM的ONCOMM事件代碼,接收的數據按上下位機約定取出賦值於全局變數,在其它窗體進行數據記錄(寫入資料庫).至於數據分析確如一樓說的可以海闊天空,通過數據控制項及SQL語句來完成任務.

以下提供MSDN參考:
OnComm 常數
常數 值 描述
comEvSend 1 發送事件。
comEvReceive 2 接收事件。
comEvCTS 3 clear-to-send 線變化。
comEvDSR 4 data-set ready 線變化。
comEvCD 5 carrier detect 線變化。
comEvRing 6 振鈴檢測。
comEvEOF 7 文件結束。

MSComm 控制項提供下列兩種處理通訊的方式:

事件驅動通訊是處理串列埠交互作用的一種非常有效的方法。在許多情況下,在事件發生時需要得到通知,例如,在 Carrier Detect (CD) 或 Request To Send (RTS) 線上一個字元到達或一個變化發生時。在這些情況下,可以利用 MSComm 控制項的 OnComm 事件捕獲並處理這些通訊事件。OnComm 事件還可以檢查和處理通訊錯誤。所有通訊事件和通訊錯誤的列表,參閱 CommEvent 屬性。
在程序的每個關鍵功能之後,可以通過檢查 CommEvent 屬性的值來查詢事件和錯誤。如果應用程序較小,並且是自保持的,這種方法可能是更可取的。例如,如果寫一個簡單的電話撥號程序,則沒有必要對每接收一個字元都產生事件,因為唯一等待接收的字元是數據機的「確定」響應。
SThreshold 屬性
在 MSComm 控制項設置 CommEvent 屬性為 comEvSend 並產生 OnComm 事件之前,設置並返回傳輸緩沖區中允許的最小字元數。
說明
若設置 Sthreshold 屬性為 0(預設值),數據傳輸事件不會產生 OnComm 事件。若設置 Sthreshold 屬性為 1,當傳輸緩沖區完全空時,MSComm 控制項產生 OnComm 事件。
如果在傳輸緩沖區中的字元數小於 value,CommEvent 屬性設置為 comEvSend,並產生 OnComm 事件。comEvSend 事件僅當字元數與 Sthreshold 交叉時被激活一次。例如,如果 Sthreshold 等於 5,僅當在輸出隊列中字元數從 5 降到 4 時,comEvSend 才發生。如果在輸出隊列中從沒有比 Sthreshold 多的字元,comEvSend 事件將絕不會發生。

CommEvent 屬性包含實際錯誤或產生 OnComm 事件的數碼。注意,設置 Rthreshold 或 Sthreshold 屬性為 0,分別使捕獲 comEvReceive 和 comEvSend 事件無效。

『捌』 如何從串口伺服器845讀取數據

將串口轉換成網口工具,編寫通訊協議,建立連接對回碼包解析拆分存儲。
讀取串口伺服器數據,總體上的思路如下。
1、應用串口轉網口工具,將串口通訊轉換成網口通訊。
2、根據不同通訊協議,編寫相關通訊協議,建立連接,讀取伺服器端回碼。
3、對回碼進行數據包解析拆分。
4、將回碼的數據要麼進行轉發或者存儲資料庫。

『玖』 如何獲取8266串口輸出的信息

電腦對電腦,或電腦虛帆對單片機,
串口的收發都是按照設拍肆備的協襲譽轎議要求來做的,
如果協議相符,設備就會做出相應,
在電腦端,可以採用通用軟體完成顯示,
也可以根據需要,自己編制軟體完成,
總之,根據你控制和顯示的要求,力求簡單快捷

『拾』 設備通過串口輸出信息如何獲取輸出的內容

設備的串口是RS232介面的,還是RS485的?要是RS232的就方便多了,用串線接到電腦的串口上,用串口調試助手就能收到也能看到,可以看到十賀洞六制進的數,或者用超級終端,漏拍喊但只能看到ASCII碼。要是RS485就麻煩點,在電腦上要安一個RS232轉RS485的轉換器才能返野收到。

閱讀全文

與串口輸出信息如何獲取相關的資料

熱點內容
金奧力產品為什麼有兩種包裝 瀏覽:948
光纖技術的應用領域有哪些 瀏覽:526
南康區信息平台網有哪些 瀏覽:887
購買預售房應如何交易 瀏覽:714
環保交易所的碳的交易是什麼意思 瀏覽:623
項目文檔技術指標怎麼寫 瀏覽:503
轉轉裡面游戲交易怎麼樣 瀏覽:519
企業制度與程序文件哪個大 瀏覽:623
年中建賬都要錄入哪些數據 瀏覽:614
上海什麼是圍框交易價格 瀏覽:288
絕地軍團資源商怎麼交易 瀏覽:431
恆達代理伺服器如何卸載 瀏覽:187
文職技術八級對應什麼級別工資 瀏覽:823
調解前置程序指什麼 瀏覽:974
在江蘇鹽城種植什麼產品最好 瀏覽:651
可以用於分析數據趨勢的是什麼圖 瀏覽:858
農安什麼是網路技術服務排名靠前 瀏覽:762
為什麼房子難交易 瀏覽:447
菏澤中軟信息技術有限公司怎麼樣 瀏覽:1000
huawei如何關閉程序 瀏覽:85