看板 Visual_Basic 關於我們 聯絡資訊
小弟想用RS232傳送ASCII碼 但是遇到一個問題 就是當ASCII是 "null"的時候 (也就是二進制 0000000) 會收不到資料,就連之後的資料也會不見或錯誤 收不到資料的原因可以理解,因為原本他就是空字元 所以應該是這樣收不到資料 因為我是先將二進制轉ASCII之後再傳送 所以這個null很困擾我 有什麼方法可以讓它轉null以後仍然可以將他傳送出去的嗎? 也就是收的到null這個ASCII. 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.111.72
ClubT:NULL 和 空字元應該不一樣 05/22 12:18
minisky0522:應該是不一樣,不過我用Asc("")也沒辦法顯示.. 05/22 14:30
minisky0522:而且我送一串,中間有null的話,後面的就全部不送了>< 05/22 15:48
MOONRAKER:感覺好像是C String把null視為字串結束字元的問題? 05/22 18:47
fumizuki:你可以把null改成其他字元 例如:\0 05/23 06:34
minisky0522:請問改成 /0的意思是送/0嗎?我測試的結果他是把null 05/23 13:53
minisky0522:當結束位元沒錯,如果要改/0應該從何下手? 05/23 13:53
minisky0522:因為我不可以把它用ASCII的任意另外值取代,都會用到 05/23 13:54
minisky0522:是\0 = =" 05/23 13:55
fumizuki:\ 用2個\ 替代 null用\0 替代 05/23 22:32
fumizuki:傳送前Replace(Replace(s, "\", "\\"), Chr(0), "\0") 05/23 22:34
fumizuki:接收端Replace(Replace(s, "\\", "\"), "\0", Chr(0)) 05/23 22:34
minisky0522:感謝大大的提示,但是因為接收端是使用C++,所以如果 05/26 16:30
minisky0522:以上面的方法變成接收端要判斷兩次,想請問是否其他 05/26 16:30
minisky0522:辦法可以讓Chr(0)送出去且接收端可以直接收到的呢? 05/26 16:31
fumizuki:沒聽說過方法 分批送資料如何?(就是以null分割成數次傳送 05/26 20:44
minisky0522:何解?預定最壞辦法就是上面替代的方法,這分批送 05/26 21:39
minisky0522:是什麼意思呢?若是切成兩個以上送,那接收端一樣要 05/26 21:40
minisky0522:作判斷是吧?我最大目的是要讓接收端直接收7bits0 05/26 21:41
fumizuki:第二個替代方案不需要Replace 接收端亦不用判斷 05/27 06:37
fumizuki:但傳送端需Split分割傳送的資料 接收端要合併收到的資料 05/27 06:38
fumizuki:我是以一連串的資料中有某幾個byte有null為例@@ 05/27 06:39
fumizuki:如果只傳送一個null的話 可能還是要用其他字元替代了@@ 05/27 06:40
minisky0522:謝謝版主的教導啦..最後應該只能用替代的方法了..謝啦 05/28 14:53