在XE6,如何用TMS rs232傳chr($81)以上的資料?? |
答題得分者是:aftcast
|
jackiemi2_seed
中階會員 發表:37 回覆:97 積分:76 註冊:2006-09-11 發送簡訊給我 |
用下面二個語法,傳出去的都是80+3F
VaComm1.WriteText(chr(strtoint('$80')) chr(strtoint('$81'))); VaComm1.WriteText(AnsiString(chr(strtoint('$80'))) AnsiString(chr(strtoint('$81')))); 有其他方法可以傳chr($81)的資料嗎??
------
OS : Win 7 pro Program : Delphi 7 DataBase : Ms Sql 2008 |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
感覺是元件的問題… (它似乎不支持unicode?)
可否改用spcomm的最新版來實做? ktop應該有,去年還什麼時候,找一下。若沒有,請來信和我要我自己也修正的版本。 ===================引 用 jackiemi2_seed 文 章=================== 用下面二個語法,傳出去的都是80 3F VaComm1.WriteText(chr(strtoint('$80')) chr(strtoint('$81'))); VaComm1.WriteText(AnsiString(chr(strtoint('$80'))) AnsiString(chr(strtoint('$81')))); 有其他方法可以傳chr($81)的資料嗎??
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
jackiemi2_seed
中階會員 發表:37 回覆:97 積分:76 註冊:2006-09-11 發送簡訊給我 |
aftcast兄您好:
您的信收到了,也安裝好了 程式語法如下, 測試結果,也是不支援chr($80)以上字元 [code delphi] var ls_send:PansiChar; begin ls_send:=PAnsiChar(AnsiString(chr(strtoint('$80')) chr(strtoint('$81')))); Comm1.WriteCommData(ls_send,Length(ls_send)); [/code]
------
OS : Win 7 pro Program : Delphi 7 DataBase : Ms Sql 2008 |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
你好,字元轉換應該如下:
var ls_send:PansiChar; astr:AnsiString; begin ls_send:=PAnsiChar(#$41#$81'K'); //ok的 astr := AnsiChar($41) AnsiChar($82) AnsiChar($42); ls_send := PAnsiChar(astr); // 也ok的 end; 以上,再試看看。 ===================引 用 jackiemi2_seed 文 章=================== aftcast兄您好: 您的信收到了,也安裝好了 程式語法如下, 測試結果,也是不支援chr($80)以上字元 [code delphi] var ls_send:PansiChar; begin ls_send:=PAnsiChar(AnsiString(chr(strtoint('$80')) chr(strtoint('$81')))); Comm1.WriteCommData(ls_send,Length(ls_send)); [/code]
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
jackiemi2_seed
中階會員 發表:37 回覆:97 積分:76 註冊:2006-09-11 發送簡訊給我 |
|
jackiemi2_seed
中階會員 發表:37 回覆:97 積分:76 註冊:2006-09-11 發送簡訊給我 |
aftcast兄您好:
有測過$00嗎??? 照下面語法,只出現80,00後面的跑不出來 [code delphi] var ls_send:PansiChar; astr:AnsiString; //方法一 astr := AnsiChar($80) AnsiChar($00) AnsiChar($82); ls_send := PAnsiChar(astr); //方法二 ls_send:=PAnsiChar(#$80#$00#$82); Comm1.WriteCommData(ls_send,Length(ls_send)); [/code]
------
OS : Win 7 pro Program : Delphi 7 DataBase : Ms Sql 2008 |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
你好,
因這幾天工作上會比較忙,若抽出空再幫你。因delphi語法我不是很熟,不好不測就信手寫來回覆你,以免錯誤。 可是我可以提醒你作法: 假如astr的長度是len。你準備要加入一個 00 的值。 那麼 if (value=0 ) setlength(astr, len 1) astr[len 1] := 0; else 原來的方式 若不行,還有別的做法… 待我有時間測delphi。 ===================引 用 jackiemi2_seed 文 章=================== aftcast兄您好: 有測過$00嗎??? 照下面語法,只出現80,00後面的跑不出來 [code delphi] var ls_send:PansiChar; astr:AnsiString; //方法一 astr := AnsiChar($80) AnsiChar($00) AnsiChar($82); ls_send := PAnsiChar(astr); //方法二 ls_send:=PAnsiChar(#$80#$00#$82); Comm1.WriteCommData(ls_send,Length(ls_send)); [/code]
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
[code delphi] var astr:AnsiString; len, val :integer; begin astr := '12345'; val :=0; if val=0 then begin setlength(astr,Length(astr) 1); astr[Length(astr) 1] := AnsiChar(0); end else begin // 之前的做法, astr := AnsiChar($41) AnsiChar($82) AnsiChar($42); end; //astr := astr AnsiChar($41); //len := Length(astr); // = 7 end; [/code] ===================引 用 jackiemi2_seed 文 章=================== aftcast兄您好: 有測過$00嗎??? 照下面語法,只出現80,00後面的跑不出來
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
jackiemi2_seed
中階會員 發表:37 回覆:97 積分:76 註冊:2006-09-11 發送簡訊給我 |
找到問題了
Comm1.WriteCommData(ls_send,Length(ls_send)); ls_send資料有$00,不可用length捉長度 改變寫法就好了 [code delphi] var astr:AnsiString; begin astr := AnsiChar($80) AnsiChar($00) AnsiChar($FF) AnsiChar($80) AnsiChar($00) AnsiChar($FF); Comm1.WriteCommData(PAnsiChar(astr),Length(astr)); [/code] 感謝aftcast兄抽空回覆問題 3Q
------
OS : Win 7 pro Program : Delphi 7 DataBase : Ms Sql 2008 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |