[問題] 關於rs232傳輸數字無法傳超過127的問題

看板C_and_CPP作者 (距離...是妳經過我的時候)時間14年前 (2012/02/12 21:50), 編輯推噓3(3016)
留言19則, 10人參與, 最新討論串1/1
小弟使用visual studio 2008中的c++ windows form撰寫了一個簡單 的rs232傳輸程式. 我使用的是他提供的serialport工具,可以直接在頁面屬性上調整他 的包率以及其他設定rs232傳輸的格式選項. 我拿兩台電腦測試,傳輸數字從0到255.但是接收端可以正常接收到127(16進位7F) 以下的數字,但傳到128時,接收端就會顯示16進位的3F,傳送129之後接收端就都顯示 0了. 小弟研究了一整天都沒結果,只好請板上的高人麻煩替小弟指教一下 小弟的程式內容很短,只有以下幾行: for(int i=0;i<255;i++) { serialPort1->Open(); unsigned char buff1[100]; buff1[0]=i; String^ ttt = gcnew String(reinterpret_cast<const char*>(buff1)); serialPort1->Write(ttt);//傳到128會出問題 serialPort1->Close(); } 不知道是否有地方是需要改進的? 如果有高手願意指教的話,我順便附上我的程式下載連結. 下面網址直接點選就可以下載了. http://ppt.cc/v4n0 執行程式時,只要按下圖案中的BUTTON就會從0開始傳送到255, 但是127之後接收端收到的訊息都是錯的... -- 推 godtomanne:alt+f4沒有用? 9/10 00:18 → alt:去你媽的       9/10 00:24 噓 F4:你才沒用       9/10 00:25 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.64.138.122

02/12 22:02, , 1F
我猜是被拿去做2's complement了 你傳負數試試
02/12 22:02, 1F

02/12 23:10, , 2F
小弟試過傳負數了,結果接收短仍然都是顯示0,真的很奇怪
02/12 23:10, 2F

02/12 23:10, , 3F
02/12 23:10, 3F

02/12 23:11, , 4F
會不會是接收端的問題?
02/12 23:11, 4F

02/12 23:14, , 5F
接收端我是用網路上抓的RS232測試軟體,可以傳送或接收
02/12 23:14, 5F

02/12 23:15, , 6F
RS232的訊息,發送端用這個軟體傳送0~255測試時,接收端也
02/12 23:15, 6F

02/12 23:16, , 7F
都是可以正常顯示,唯讀我撰寫的程式,最多只能傳到127...
02/12 23:16, 7F

02/12 23:18, , 8F
所以我覺得應該是我寫的這個程式有地方需要改進才對
02/12 23:18, 8F

02/12 23:18, , 9F
你的reinterpret_cast裡面要不要也改寫成unsigned char
02/12 23:18, 9F

02/13 00:03, , 10F
一定要用string嗎? 檢查一下cast之後string的內容?
02/13 00:03, 10F

02/13 00:03, , 11F
不然用array<unsigned char>看看?
02/13 00:03, 11F

02/13 00:59, , 12F
<const char*> ?? <const unsigned char*> ??
02/13 00:59, 12F

02/13 01:40, , 13F
因為要傳128以上,就不能採用String模式,而是採用byte模式
02/13 01:40, 13F

02/13 01:44, , 14F
String容器無法存byte在128~255的值,所以存完就變成65了
02/13 01:44, 14F

02/13 01:45, , 15F
0~127的值,就是對應的ASCII code 字元表
02/13 01:45, 15F

02/13 10:17, , 16F
Extended ASCII Codes
02/13 10:17, 16F

02/13 10:18, , 17F
直接秀出byte試看看
02/13 10:18, 17F

02/15 12:07, , 18F
data format 要設成 N 8 1. 不然只會傳送 7 bits
02/15 12:07, 18F

02/21 11:17, , 19F
原因我想應該是上樓說的 @@
02/21 11:17, 19F
文章代碼(AID): #1FDyExUq (C_and_CPP)