雙手擼碼20+天,串口軟體(visual-serial)終於有了基本雛形

2022-01-30 電子工程世界

在我發的DIY前篇的帖子裡面,提到了工欲善其事,必先利其器,然後從國慶期間就開始擼碼,然後拖拖拉拉擼了二十多天,串口軟體終於有了雛形。。如果按著這個進度,我估計DIY是要泡湯了。


為什麼要自己擼串口軟體,主要就是因為其他的串口軟體並不理想,功能太受限。


我擼的這個軟體,我給他命名叫做visual-serial,我也實在是想不出好的名字了,這款軟體的最大特點是具有擴展性,用戶可以根據自己的需要擴展功能。這款軟體是開源的,GitHub地址是(長按二維碼識別進入)

 ,如果你感覺這個軟體有點用,請幫我點點star(我建議寫代碼的壇友,一定要把git用起來,這個工具的功能太強大了,用起來你會受益匪淺,哦對了,我這裡有個電子書,對使用GitHub會有幫助,下載地址:

(有經濟能力的請儘量支持正版),歡迎有想法、有興趣的人一起來完善這個軟體,歡迎廣大壇友提出各種意見和建議。


這款軟體基於electron框架開發,使用的語言是HTML、CSS、JavaScript/Node.js,為什麼選擇這個平臺,很多人可能跳出來說為什麼不用QT,不用Python,我認為electron框架的主要優點在於:

易擴展,只要添加或者修改js文件就能達到添加或者修改功能的目的,不需要編譯,比如說,這個軟體沒有你想要的波特率(前提是系統要支持這個波特率),好的,打開相應的js文件,找到對應的源碼,在數組裡添加一個數字就搞定了。或者增加中間件,都是輕而易舉。

JavaScript開發會比較省時省力,至少要比C++開發容易的多,高級語言一行代碼頂c/c++好幾行,而且js的各種庫很全面,目前visual-serial的主要代碼不到1000行。每個中間件的代碼不足100行


不過具有優點的同時,缺點肯定避免不了:

雖然理論上支持>=windows7, macOS, 部分Linux系統,但是不支持XP

軟體體積比較大,打成壓縮包後大約50M,因為這是一個框架,集成的功能實在太多了,雖然我們用不到

運行會比較佔資源,費CPU和內存

廣大電工可能不熟悉JavaScript,但是JavaScript至少在語法上是屬於C系的,你看懂JavaScript應該很容易,至少要比python什麼的容易。

現在來說說這個軟體的特點,前面提到了,最大的特點是可擴展性高,可擴展性就是通過中間件來實現的,所謂中間件,就是一個函數,放在數據流中對數據進行一定的處理,用一個圖來描述可能更直觀:

中間件的我給他分成了三類,middleware,protocol和widget。

middleware就是一個簡單的函數,對數據進行一定的處理。

protocol呢,他定義了兩個函數,encode和decode,分別完成某種協議的封裝和解析。

widget用來擴展界面與用戶實現交互,或者是對數據的展示。


從實現上來說,middleware和protocol都是一個單獨的js文件,widget是一個文件夾,裡面通常包含html、css和js文件
目前軟體附帶了幾個中間件示例,分別是FF-protocol、savetofile、timeout、drawgraph、characterEncoding。


FF-protocol:
假設有某數據格式規定:數據幀以0xFF開頭、0xFF結尾,數據中出現的FF轉義為FE 01,FE轉義為FE 00,數據末尾增加異或校驗和。 decode方法完成的工作包括:檢測起始的FF字節,然後開始接收數據並進行轉義和計算校驗和,直到接收到尾部的FF,此時如果校驗和正確,則把數據傳給下一個中間件。 encode方法就是對數據增加頭尾FF、轉義和加入校驗和,然後傳給下一個中間件。示例:
56 A2 D3 91==encode==>FF 56 A2 D3 91 B6 FF
FF 56 A2 D3 91 B6 FF==decode==>56 A2 D3 91


savetofile: 
顧名思義,把經過這個中間件的數據保存到文件中,並繼續傳遞數據至下一個中間件。
 timeout:
如果數據幀沒有具體的格式,無法判斷數據的頭尾,可以用超時時間來粗略判斷幀的結束。如果等待設定的毫秒數內未再收到數據,則把已經收到的數據傳給下一個中間件。 注意:計算機的計時並不準確,尤其是計算機任務繁重的時候,因此選擇這個中間件是個下策。


characterEncoding:
完成字符串編碼的轉換,支持多種編碼,如UTF8,UTF16,GB18030,因此數據發送和接收可以支持各種字符編碼。 軟體默認的接收和發送採用UTF8編碼,UTF8兼容ASCII,如果數據中包含ASCII之外的字符,則需要注意編碼轉換問題。
 
drawgraph:
這是一個窗口擴展,可將數據按特定類型提取,並畫出變化曲線。其中BE為設置大端模式,min和max設置繪製曲線時的最小和最大取值範圍,不設置為自適應範圍。

這些僅僅是我寫的示例,可能是用處並不是很大,我的目標其實就是想集成電工們最常用的一些功能、一些協議,做成中間件,滿足電工們的日常需求。所以,壇友們的反饋和建議非常重要,能參與到這個項目中更是求之不得。目前只是搭起了架子,後續還會持續改進。

數據發送

數據發送主要有字符串和十六進位發送兩種方式。這些功能比較基礎沒有可介紹的,值得一提的是,以十六進位發送的時候,可支持多種十六進位格式以及寬鬆的判斷,例如:
{0x45, 0x56, 0x89, 0xAB, 0xF2} => 45 56 89 AB F2 
08H 58H 9AH BCH => 08 58 9A BC 
0x120x560x8a 9F7C62 3 B 5 => 12 56 8A 9F 7C 62 03 0B 05 

基本功能我不在這裡囉嗦了,我寫了個文檔在GitHub上:https://lcofjp.github.io/visual-serial/
雖然主界面很醜,但是我還是上個圖吧:

歡迎各位壇友下載體驗,您的使用就是對我最大的支持,如果有任何意見和建議,軟體有什麼bug,歡迎到本帖留言。
下載地址: 
https://pan.baidu.com/s/1mhAt4Ju
目前只提供了windows和macOS的版本,解壓之後是個文件夾,在裡面找visual-serial.exe。。。。。

相關焦點

  • VC++6.0串口通信技術資料:軟體/源碼/論文/書籍/視頻/控制項/程序
    並可以接收和發送數據,裡面有詳細源碼的解釋說明055、VC++基於對話框的串口通訊原始碼 實現採集數據的接收和發送056、VC++開發串口程序,可以輔助深刻的了解到個個文件的傳輸057、vc++開發的串口編程,包括打開串口,設置串口,讀取數據等等操作058、VC++開發的串口通訊軟體原始碼, 非常的詳細059、VC++開發的通信串口編程的一部分
  • 曲線繪製還在用串口助手?來用Qt寫一個!
    * @retval int */int main(void){ /* USER CODE BEGIN 1 */ /*流水號*/ int serial_number = 0; char display_buf[20] = {0}; char procol_buf[20] = {0};
  • 串口通訊作業概述
    串口幾乎為所有計算機的裝置通訊協議標準。請別與通用串行總線 (Universal serial bus,USB) 產生混餚。大多數的計算機均配備 2 組 EIA-232 架構的串行埠。串口亦為常見的通訊協議,適用於控制多種儀器設備,並可搭配 EIA-232 通訊埠使用多款 GPIB 兼容的裝置。此外,用戶可透過數據擷取的串口通訊功能,進而整合遠程取樣裝置。
  • SecureCRT--基本使用方法
    ⒉ 基本使用方法串口連接方式1) 將PC的串口與網關設備的 Console口通過串口線連接,查看到的COM埠號如下:2)啟動SecureCRT當安裝好 SecureCRT後,雙擊桌面上的「SecureCRT」圖標,
  • 串口下載與調試、STC-ISP軟體使用詳解
    硬體準備STC系列單片機使用STC-ISP軟體進行下載, 在進行下載之前需要用線連接單片機的UART0 (P3.0 P3.1)和運行STC-ISP程序的PC機的串口。根據單片機系統的電平轉換情況和PC機的接口類型有多種硬體連接情況。
  • 華為Serial接口命令大全,絕了!
    今天給大家帶來的是華為Serial接口命令大全,主要有:invert receive-clock auto具體介紹如下:async mode(serial) 命令功能async mode命令用來配置異步方式下Serial接口的工作模式
  • 基於ROS搭建簡易軟體框架實現ROV水下目標跟蹤
    基礎運動模塊的任務為:將總控制量(力、轉矩)根據機械結構模型、機器人狀態等分配到每個推進器,計算出每個推進器所需提供的推力,然後根據推進器電機模型計算該推進器的PWM波,最後將PWM波通過串口下發至MCU,實現對推進器的控制。
  • C#做一個簡單的進行串口通信的上位機
    1、上位機與下位機        上位機相當於一個軟體系統using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.IO.Ports;using System.Diagnostics;namespace serial2
  • 串口通訊時傳輸速率與傳輸距離有什麼關係
    4、傳輸距離串行通信中,數據位信號流在信號線上傳輸時,要引起畸變,畸變的大小與以下因素有關:波特率 —— 信號線的特徵(頻帶範圍)傳輸距離 —— 信號的性質及大小(電平高低、電流大小)當畸變較大時,接收方出現誤碼。在規定的誤碼率下,當波特率、信號線、信號的性質及大小一定時,串行通信的傳輸距離就一定。
  • 【必備神器】安卓模擬器,擼羊毛必備
    安卓模擬器是一種可以讓安卓應用程式運行在WINDOS系統上的神奇軟體,它能在電腦上模擬安卓手機系統,並能安裝、使用、卸載安卓應用軟體,讓你在電腦上也能體驗操作安卓系統的全過程。2、安卓模擬器跟薅羊毛有啥關係?解決設備問題:很多擼羊毛的用戶只有些老人機接收簡訊用,配合模擬器最合適。
  • 常用的交換機組網模擬器有哪些?交換機如何登陸配置?
    3、模擬交換機配置的軟體有哪些?工作中使用遠程工具其實有很多,常用於交換機連接調試有三個。1、secureCRT是需要付費的,收費肯定是有原因的,當然網上也有破解版,功能很強大,支持tab,多窗口切換,效率高,多窗口同時命令下發,批量直接查詢,便捷的文件上傳下載功能,無需另開連接、、、等等還有其它的一些功能。可以說用起來比較方便。
  • HMI圖形界面人機系統軟體KISS(KADI Industry Support System)
    ,KISS軟體主要由三部分組成:編輯器軟體,模擬器軟體和串口調試模擬器。編輯器軟體用於 HMI界面編輯並生成模塊需要的文件,模擬器軟體可以在 PC 上直接模擬界面的操作,串口模擬調試器器則模擬一串口與模擬器進行通信。
  • STM32 串口詳解
    2.波特率由於異步通信中沒有時鐘信號,所以接收雙方要約定好波特率,即每秒傳輸的碼元個數,以便對信號進行解碼,常見的波特率有4800、9600、115200等。STM32中波特率的設置通過串口初始化結構體來實現。
  • 8051單片機串口通信中的檢錯方法
    1 檢錯方式基於8051的串口數據通信系統的硬體開發平臺框圖如圖1所示。利用該平臺進行數據傳輸時,通常有三種數據檢錯方式。發送端將原始數據P(x)和生成的CRC校驗碼R(x)發送到接收端。接收端則根據接收到的數據P'(x)算出另外的一個CRC校驗碼R'(x),然後對兩個CRC校驗碼進行比較,即可得出在傳輸過程中是否有錯誤發生。若發生錯誤,則用發送端重傳。本文中所採用的CRC8所生成的多項式G(x)為:x2+x5+x4+1。