(串口通信編程) 開源串口調試助手Common (Com Monitor)


  最新的文檔見這里:http://blog.twofei.com/566/

 

  我寫的串口調試助手程序以及源代碼.

  警告:請勿將本軟件源代碼用於任何商業用途。

  其實吧, 我寫的這個串口軟件絕對比網上流傳的一些串口調試軟件好用很多, 對於軟件,我本身並沒有作
  太多推廣, 一些功能我由於懶也沒有文檔化; 如果您正在使用, 也覺得我說得沒錯, 還望您幫忙推廣一下. 感激!

      本程序最近正在使用C++完全重構, github上面的源代碼無法通過編譯~~
  敬請期待最新版本!
 

      微雲你就一坑貨, 說了的鏈接永久有效呢?


      源代碼:https://github.com/movsb/common.git

  聲明:本軟件為開源軟件,絕對不包含任何對系統不利的代碼,對於360的那種行為,我不想說什么.

  軟件界面:
  
  

-------------------------------------------------------------------------------------------------------------------------

    說明: 更新信息可能不會再更新到這里, 請到GitHub上面查看.


  更新:
2014-07-07:
    ①優化:接收數據時,如果最后一個字符是'\r'或'\n',則會在一定時間內等待接收所有'\r','\n'字符,避免導致讀取'\r\n'可能造成的兩次換行
    ②更改:除已經提到的那三種情況, 還有使用'\r\n\r'三個字符作為換行符使用的, 已增加支持

2014-07-07:
    ①修復:回車換行字符'\r','\n','\r\n'均能達到換行效果
    ②修復:一開始"忽略回車"等無法點擊問題
    ③優化:簡化對數據中包含'\0'的數據的處理
    ④增加:簡潔界面模式時把工具欄放到左邊
    ⑤更改:只顯示接收區按下的"回車"字符為"<Enter>",其它不顯示
    ⑥增加:接收區增加一個"清空數據"菜單

2014-07-06 1.17:
    ①增加:允許從接收區輸入字符並發送(更友好的類交互模式)
    會顯示的字符包括:
      ' '     <Space>
      '\b'   <Backspace>
      '\t'   <Tab>
      '\r'   <Enter>


  感覺輸入效果還不錯:

    ②更改:更改了字符接收區/發送區的字體為Consolas等寬字體,不再使用原來的Courier字體
    ③增加:簡潔模式 - 此模式下大部分界面元素會被隱藏, 有時候這樣更舒服
    見上圖所示, 左下角為"簡潔模式"開關, 開啟簡潔模式后就像上圖, 是不是很簡潔?
    ④增加:主窗口的自動界面布局(允許拖動改變窗口大小,控件坐標自動調整)
    ⑤更改:默認使用的模式改為:字符接收+字符發送

2014-07-05 1.16 (未對外發布):
    ①字符接收數據時,增加對控制字符Backspace的支持(即'\b'),效果就是向前刪除一個字符
    
    ②修復一處中文檢測錯誤(原來是對的, 不知道什么時候改錯了
    ③刪除了窗體大小調整(下個版本即將使用自動布局)


2014-03-03 1.15:
  更新:支持手動輸入非標准波特率
  改進:增加了幾個功能快捷鍵,比如Alt+S為發送,....
  優化:修正:如果接收緩沖區有未顯示的數據,則會在按下繼續顯示時進行提示,而不是原來的在接收到下一次的數據時進行提示;
  
    
2013-11-02 1.14:
   更新:修改了原來的命令發送模式的界面,現在變得更加友好了
     如下圖, 先選擇要發送的命令列表文件:
       choose_file.png
    點擊打開, 將會打開如下界面:
      interface.png

      1.上面的代碼是我測試藍牙芯片用到的命令列表文件, 點擊"發送命令"就會發送對應的一條命令
       2.16進制還是原來的要求, 2個一組即可; 對於字符數據:默認開啟轉義字符功能, 比如 '\n' 就代表換行,
        支持字符型轉義字符有6個, \n,\r,\\,\t,\a,\v,\b, 那些可見的字符不需要轉義, 比如引號,問號...
        支持的16進制轉義字符格式:\x??  - 其中, 一個?代表一個16進制字符, 以上4個字符組成一個16進制值,缺一不可
      3.文本框中的數據可以在發送時隨時修改,回車鍵可看到效果, (但修改的內容目前不能更新到原來的本地文件上)
      4.注意到數據類型后面的"雙擊改變"幾個字樣, 也就是說通過雙擊, 可以改變那條命令的解析格式
      5.數據大小是指最終要被發送的數據的大小, 而不是轉義前的大小
    
    命令文件的格式舉例:
        C:初始化SPP庫:at+init\r\n
        C:查詢任意訪問碼的藍牙設備:at+iac=9e8b33\r\n
        C:查詢設備類為0x1f1f的藍牙設備:at+class=1f1f\r\n
        C:設置查詢模式:at+inqm=1,9,48\r\n
        C:過濾,查詢周邊藍牙設備:at+inq\r\n
        H:16進制測試:12 45 67 4f

      分為3部分組成, 兩者之間用冒號隔開:
        第1部分:C或者H(大寫), 代表數據是16進制還是字符數據
        第2部分:命令的名字
        第3部分:數據對應的數據

  BUG修復:
    上一個版本在發送數據前忘記檢查串口是否已經打開了, 已修復~
----------------------------------------------------------------------------------------------------------
2012-12-24 1.0.0.0:
    發布第1個版本
2012-12-26:
    自動識別當前存在,插入,移除的串口號
2013-01-11 1.0.0.1:
    增加保存接收區數據到文件(16進制/文本形式)
    增加從文件讀數據到發送區(16進制/文本形式)
    增加暫停顯示功能
    增加復制發送/接收區數據到剪貼板
2013-01-18 1.0.0.2:
    修復:文本文件,16二進制文件讀取錯誤
    修復:程序內部緩沖區滿后使程序進入死循環
    修復:文本字符方式顯示接收的數據時產生不正確的換行符的錯誤,若要產生換行符, 請使用"\n"
2013-02-08 1.0.0.3:
    內部程序作了許多的優化工作,包含數據的發送方式等
    修復接收數據時鼠標在接收區的文本選擇造成的干擾
2013-02-14 1.0.0.4:
    增加顯示出0~127號ASCII對應8,10,16進制功能
2013-02-24 1.0.0.5,今天元宵節:
    更改原來的1~64串口列表到自動檢測計算機上的可用串口
2013-02-27 1.0.0.6:
    若發送文本,則自動發送被自動取消(若自動發送選項已打開)
    在顯示模式下不允許對接收區數據進行選擇操作
    提供硬件支持的串口設備設置
    為用戶提供串口超時設置
    提供手動設置DTR/RTS引腳電平
2013-03-01  1.0.0.7:
    修改原計算器(系統)為表達式求值計算器(簡單版本)
2013-03-03:
    添加:<其它>菜單添加<設備管理器>
    修改:在關閉串口后自動發送前面的鈎不再自動取消(如果已經選中)
    修改:串口被關閉/移除后串口列表回到第一個串口設備的BUG
2013-03-04:
    修改:現在在串口列表中可以顯示串口在設備管理器中的名字了
    修正:無法顯示 MSP430-FETUIF Debugger 的串口號(現在調用SetupApi更新列表)
2013-03-05:
    為了方便數據的統計與顯示,16進制內容與字符內容被顯示到不同的編輯框中
2013-03-09 1.0.0.8:
    修正在使用SetupApi枚舉串口設備時未檢測並口設備而造成的內存異常訪問錯誤
    減少在某些波特率(如:19200bps)下丟包嚴重的情況(如:MSP430串口),有時候還是會發生,等待修復.某些軟件(如:SComAssistant采用每
次只讀一個字節的辦法效果還行, 就是速度有點慢. 我改成了WaitCommEvent函數調用了(原來是Pending ReadFile),減少了CPU占用(有些串口驅動並不總是支持同步操作.
    以前只管ReadFile+輸出nRead字節,這里錯誤,ReadFile並不保證讀取到要求的數據量后才返回,這里會導致嚴重丟包,WriteFile亦然.
    速度減慢,但數據更完整
2013-03-10 1.0.0.9:
    修正:因為在格式化字符串的最后少寫了一句 *pb = '\0',導致接收區數據顯示錯誤!
  修復:對utils.hex2chs和add_text作了大量修改,大大減少數據丟包,貌似沒有丟包?,細節處理參見源程序
  1.0.0.8版本因為內部原因速度嚴重減慢, 1.0.0.9回到原來的快速!
2013-03-18:
    更正:若為字符顯示方式,16進制方式保存不被允許,因為格式基本上不滿足!
2013-03-23 1.10:
    添加:工作模式中,右鍵點擊接收區字符文本框可以使能中文顯示模式(不推薦),由於中文字符由
    兩個字節構成,所以:一旦在某一次接收過程中只
接收到了中文字符的一個字節,那么數據就會顯示出錯, 這個無法避免, 所以建議盡量不使能中文顯示模式.
    修正:用C語言的人們都習慣使用'\n'作為換行符,我也這樣使用,
但偏偏Windows的編輯框以'\r\n'作為換行符,沒有辦法,我不得
不把所有的'\n'換成'\r\n',效率必然會下降,而且我不得不計算出
\n的個數先 --> 為了計算所需緩沖區的大小.
    添加:現在可以顯示出還未被發送出去的數據計數.
    添加:新增計時器,打開串口后開始計時,關閉后停止計時.
2013-03-25:
    修正:大大減少中文亂碼的問題.細節處理見代碼.
    增加:字符串轉16進制數組功能,工具菜單里面.

2013-04-04:
    修正:無法復制接收區字符文本的BUG.
    小提示:在選擇串口時,如果沒有任何可用的串口,則進行提示更新.
2013-04-07:
    修改:完全修改了utils.str2hex的實現,大大增加了16進制輸入的靈活性.
現在的要求:每個16進制值由兩個相鄰字符組成,無其它限制.(以前是2個相鄰字符+一個空格)
2013-04-11:
    發送字符數據時,對於換行,只發送'\n',不再發送'\r\n',注意:結尾的'\0\'不被發送!
2013-04-13:
    修正:更改發送與接收方式為異步方式.
    添加:簡單波形顯示.
2013-04-23:
    修正:發送與接收方式改回同步方式!坑~
    修正:當發送操作達到100次時無法繼續發送的BUG!
    修改:優化內部線程同步機制,避免程序停止工作(失去響應)!
    優化:優化自動發送數據的方式,提高精度,減小內存/CPU占用!
    小提示:在加載/保存文件時,若不清楚打開/保存方式,可以查看簡單的幫助信息!
2013-05-11:明天母親節
    修正:終於找到一個比較好的辦法來處理自動發送用到的重復數據了,呵呵,時間下限減少到10ms
2013-07-05:
    臨時修正:選擇從文件加載並取消后, 串口號選擇的ComboBox會消失不見,不知道原因,臨時已解決
2013-07-14:
    改進:程序內部改進內存分配算法,避免因程序錯誤造成內存泄漏
2013-07-20 1.12:
2013-09-10 1.13 今天教師節:
     增加:現在可以手動編寫待發送的命令文件,並發送命令了 - 在發送文件時選擇 命令文件, 格式見博客后面的介紹
     增加:字符發送模式下,可以選擇取消回車換行符的發送,可以選擇插入轉義字符
        1.支持的字符型轉義字符:
            \r,\n,\t,\v,\a,\b,\\
        2.支持的16進制轉義字符格式:
            \x?? - 其中一個問號代表一個16進制字符, 不可省略其一,
            必需保證4個字符的格式
        3.'?',''','"', 等print-able字符不需要轉義


  女孩不哭 @ 2012-12-27 14:47:59 @ http://www.cnblogs.com/memset
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM