有關RS232與BCB |
尚未結案
|
lvzhong1
一般會員 發表:29 回覆:18 積分:9 註冊:2007-01-23 發送簡訊給我 |
|
CoffeeX
中階會員 發表:18 回覆:121 積分:72 註冊:2005-02-18 發送簡訊給我 |
<textarea class="cpp" rows="10" cols="60" name="code">
AnsiString GetAnsi;
int NumCount;
double *dArray;
GetAnsi = "$1234!";
GetAnsi = GetAnsi.SubString(1,GetAnsi.Length-1);
NumCount = GetAnsi.Length;
dArray = new double[NumCount];
for(int i = 0;i < NumCount; i )
{
dArray[i] = StrToInt(GetAnsi[i]);
}
Series1->AddArray(dArray,NumCount);
</textarea>
未測試!應該稍為修改就能用了,new的請自行delete...
------
=.=??? |
lvzhong1
一般會員 發表:29 回覆:18 積分:9 註冊:2007-01-23 發送簡訊給我 |
|
CoffeeX
中階會員 發表:18 回覆:121 積分:72 註冊:2005-02-18 發送簡訊給我 |
參考看看吧
不太確定你所謂的不是定值,可舉例嗎?是沒有$ 與!作為開始與結束或...? 還是這樣的問題: AnsiString MyAnsi(YourBuffer);//輸入為char或string... 程式碼: <textarea class="cpp" rows="10" cols="60" name="code"> int First; int End; int CutCount; AnsiString MyAnsi = "$1234567!"; AnsiString TmpAnsi; First = MyAnsi.Pos("$"); End = MyAnsi.Pos("!"); CutCount = End - First -1; TmpAnsi = MyAnsi.SubString(First 1,CutCount); </textarea>
------
=.=??? |
lvzhong1
一般會員 發表:29 回覆:18 積分:9 註冊:2007-01-23 發送簡訊給我 |
|
CoffeeX
中階會員 發表:18 回覆:121 積分:72 註冊:2005-02-18 發送簡訊給我 |
能否指出你收到的單筆資料example,
如:$123456!$123,456! 或 $,1,2... 或 $123!,$123456! 如果是一個值一個值接到, 你可以用AnsiCompareIC("$")與AnsiCompareIC("!") 每當接到"!"後則將整個ansi匯出畫出圖,再清空 之後就重新產生一個ansi MyAnsi = TmpAnsi;直到"!"出現 如果是"好幾段"($..!$...!$...!)一起接到就採用已提及之方法,取出第一段之$!,之後把此段Ansi移除後在繼續下一個$!直到Ansi空掉
------
=.=??? |
lvzhong1
一般會員 發表:29 回覆:18 積分:9 註冊:2007-01-23 發送簡訊給我 |
CoffeeX前輩你好:
以下是我用終端機用出來的數值 中間那些數值就是我想要顯示在圖上的數據~(圖1) 我是用BCB中的Tcomm元件 ------------------------------------------------------------------------------------------------------------------------------------- 我大概可以把數值給取出來了,但是發現有時候數值會lose,可以有時候又不會,是程式有問題嗎? (感覺上正常如圖2,不正常如圖3) 還有就是如果我想把我取出來的Char,想轉成Int,也會出現程式錯誤(如圖4) 謝謝,我是新手所以問題會比較多一點~如果還有疑問我在解釋~感謝 程式碼: <textarea class="cpp" rows="10" cols="60" name="code"> ------------------------------------------------------------------------------ void __fastcall TForm1::Comm1ReceiveData(TObject *Sender) { String Buf,ReceiveStr,TmpAnsi; int result; int First,End; int CutCount; Buf=Comm1->Input; ReceiveStr=ReceiveStr Buf; if(!ReceiveStr.IsEmpty()) { BufLen=ReceiveStr.Length(); Edit1->Text=""; First = ReceiveStr.Pos("$"); End = ReceiveStr.Pos("!"); CutCount = End - First -1; TmpAnsi =ReceiveStr.SubString(First 1,CutCount); //result =StrToInt(TmpAnsi);這一行是轉換 Edit1->Text=TmpAnsi; Send->Text=Send->Text TmpAnsi '\r' '\n' ; ReceiveStr= ReceiveStr.Delete(1,End) ; } } ------------------------------------------------------------------------------</textarea> 圖1 圖2 圖3 圖4 |
CoffeeX
中階會員 發表:18 回覆:121 積分:72 註冊:2005-02-18 發送簡訊給我 |
|
lvzhong1
一般會員 發表:29 回覆:18 積分:9 註冊:2007-01-23 發送簡訊給我 |
|
CoffeeX
中階會員 發表:18 回覆:121 積分:72 註冊:2005-02-18 發送簡訊給我 |
|
CoffeeX
中階會員 發表:18 回覆:121 積分:72 註冊:2005-02-18 發送簡訊給我 |
|
lvzhong1
一般會員 發表:29 回覆:18 積分:9 註冊:2007-01-23 發送簡訊給我 |
CoffeeX前輩你好:
還有一個問題想問你一下~ 程式碼 ------------------------------------ int valuem,idex; bool fs; char inbuff[10000]; DynamicArray DataByte=Comm1->ReadInputByte(); for(int i=1;i if(DataByte[i]=='!') fs=true; if(fs) { inbuff[idex]=DataByte[i 1];<----這邊我只要寫這樣就會出現錯誤(圖1)~如果我寫inbuff[idex]=DataByte[i]就不會 idex ; if(DataByte[i]=='!') { // Edit1->Text=""; idex=0; fs=false; Edit1->Text= inbuff]; -------------------------------------------------------------------- 這是我程式上的問題嗎?我有去看help不過我還是找不出來問題點~所以請教你一下.....謝謝^^ |
CoffeeX
中階會員 發表:18 回覆:121 積分:72 註冊:2005-02-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |