最新的文檔見這里: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:
更新:修改了原來的命令發送模式的界面,現在變得更加友好了
如下圖, 先選擇要發送的命令列表文件:

點擊打開, 將會打開如下界面:

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
