全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1742
推到 Plurk!
推到 Facebook!

C++ builder XE 傳送ASCII差異  

尚未結案
layws
一般會員


發表:1
回覆:1
積分:0
註冊:2005-10-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-05-11 14:41:38 IP:220.135.xxx.xxx 訂閱
各位先進大家好,由於目前開始嘗試平台轉換使用BuilderXE 新版本 舊有程式RS232傳輸搭配TMS Async32 物件作為RS232傳輸物件平台 但是使用Builder2010 編譯時,可以傳送超過ASCII 127以後的資料,反之Builder傳送都變成0x00 確定應該不是TMS Async32物件問題,相同情況使用Indy 網路傳輸問題相同 自己努力爬文,始終找不到問題,請先進幫忙解惑,謝謝  


[code cpp]
void __fastcall TMainForm::Button2Click(TObject *Sender)
{
int Data = 0x92;
AnsiString SendData="";
SendData = (char)Data;
VaComm1->WriteText(SendData);
}
[/code]
正常應該回覆 0x92 但是卻回覆0x00,在使用Builder2010 前都是正常的

編輯記錄
layws 重新編輯於 2011-05-11 00:41:59, 註解 無‧
layws 重新編輯於 2011-05-11 00:42:15, 註解 無‧
layws 重新編輯於 2011-05-11 00:43:41, 註解 無‧
aftcast
站務副站長


發表:81
回覆:1482
積分:1762
註冊:2002-11-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-05-12 00:19:55 IP:122.126.xxx.xxx 訂閱
你好,
沒用過tms的,但照你的問題來看有個問題可疑。

1/ WriteText 這個方法,理論上若for 2009版以上的話,應該是實作成送w_char陣列 (即uincode字串),但卻想給他一個byte的東西。

2/但我建議你試著改用別的方法,不要用WriteText,而用類似WriteBuf (我猜應該這類的吧?) 這樣就不會有unicode string 的問題



===================引 用 layws 文 章===================
各位先進大家好,由於目前開始嘗試平台轉換使用BuilderXE 新版本 舊有程式RS232傳輸搭配TMS Async32 物件作為RS232傳輸物件平台 但是使用Builder2010 編譯時,可以傳送超過ASCII 127以後的資料,反之Builder傳送都變成0x00 確定應該不是TMS Async32物件問題,相同情況使用Indy 網路傳輸問題相同 自己努力爬文,始終找不到問題,請先進幫忙解惑,謝謝

------



蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
編輯記錄
aftcast 重新編輯於 2011-05-11 10:20:47, 註解 無‧
aftcast 重新編輯於 2011-05-11 10:23:58, 註解 無‧
layws
一般會員


發表:1
回覆:1
積分:0
註冊:2005-10-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-05-14 22:46:15 IP:223.141.xxx.xxx 訂閱
您好:  經分析後TMS 搭配RS232控件是無辜的,因為檢視程式碼都是採用AnsiString 因此程式內有UnicodeString要轉換ASCII 問題已經處理完畢
倒是同樣程式碼透過網路Indy 傳送, 就無法成功送出>127 ASCII 資料, 收到Data都被截成0x00
但實際了解使用UnicodeString 送出去ASCII >127 就無法成功! 這是遇到的狀況
目前把ASCII 塞入整串數據外送, 個人做法透過以下方式來呈現, 但是>127 ASCII 尚無法成功

ex: 要送出 [0x05]Test[0x04] 有包含可視與不可視ASCII
AnsiString 一直把數值累加後再送到對方卻無此問題, 後期2010/2011 搭配Indy 無法成功送出>127 ASCII

===================引 用 aftcast 文 章===================
你好,
沒用過tms的,但照你的問題來看有個問題可疑。

1/ WriteText 這個方法,理論上若for 2009版以上的話,應該是實作成送w_char陣列 (即uincode字串),但卻想給他一個byte的東西。

2/但我建議你試著改用別的方法,不要用WriteText,而用類似WriteBuf (我猜應該這類的吧?) 這樣就不會有unicode string 的問題



===================引 用 layws 文 章===================
各位先進大家好,由於目前開始嘗試平台轉換使用BuilderXE 新版本 舊有程式RS232傳輸搭配TMS Async32 物件作為RS232傳輸物件平台 但是使用Builder2010 編譯時,可以傳送超過ASCII 127以後的資料,反之Builder傳送都變成0x00 確定應該不是TMS Async32物件問題,相同情況使用Indy 網路傳輸問題相同 自己努力爬文,始終找不到問題,請先進幫忙解惑,謝謝

系統時間:2017-12-11 19:17:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!