BCB 對RS232控制 |
答題得分者是:GrandRURU
|
darppp
一般會員 發表:3 回覆:6 積分:1 註冊:2009-04-20 發送簡訊給我 |
我是BCB新手
最近看書與網路寫了對RS232控制程式 測試過全部都可以執行 傳值與資料都OK 但是卻不能同時下2筆以上資料 這是正常的嗎??還是說有方法可以解決 舉我的例子來說 我有個A按鈕 丟一個指令給RS232對機器下動作~此時機器也會丟一個回傳確認指令 另外我還有個B按鈕 這是要希望機器能狀態回報用的 所以要一值丟命令讓機器一值回報現在狀態 問題在我這2個按鈕個別使用或是輪流使用都OK 但是先使用B產生無限迴圈傳值後 再按A就會當掉 有沒有辦法讓按下A鈕之後B自動中斷 再A執行完後B自動繼續呢??? PS.機器端是現成品無法對其軟體作修改 不好意思~我真的是超新手~~發問不明確的地方請多多指教 |
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
這個情況應該是buffer滿了造成
要不要試試看用timer來偵測buffer有沒有資料(有資料就接收) 這樣應該可以解決 ===================引 用 darppp 文 章=================== 我是BCB新手 最近看書與網路寫了對RS232控制程式 測試過全部都可以執行 傳值與資料都OK 但是卻不能同時下2筆以上資料 這是正常的嗎??還是說有方法可以解決 舉我的例子來說 我有個A按鈕 丟一個指令給RS232對機器下動作~此時機器也會丟一個回傳確認指令 另外我還有個B按鈕 這是要希望機器能狀態回報用的 所以要一值丟命令讓機器一值回報現在狀態 問題在我這2個按鈕個別使用或是輪流使用都OK 但是先使用B產生無限迴圈傳值後 再按A就會當掉 有沒有辦法讓按下A鈕之後B自動中斷 再A執行完後B自動繼續呢??? PS.機器端是現成品無法對其軟體作修改 不好意思~我真的是超新手~~發問不明確的地方請多多指教 |
darppp
一般會員 發表:3 回覆:6 積分:1 註冊:2009-04-20 發送簡訊給我 |
感謝大大的回答
我再說明清楚一點 B動作其實是有觸發紐跟停止鈕 觸發後~無限次的傳送資料給RS232 即使其他按鈕也再傳送資料 B的動作可以延遲但是不能停住 除非按下B動作的停止鈕 其他的按鈕很多不只A一個 BUFFER一值都有資料 因為B按鈕的動作就是希望機器那邊一值狀態回報 以得到最新的訊息 我不知道我的想法對不對 是不是應該只要除了B的(觸發&停止)紐以外的按鈕動作 B的功能就被中斷等待其他動作結束後B的功能自動復歸 但是這樣怎麼寫阿?? 表達不好的地方還請大大們多多糾正指教 感恩 ===================引 用 GrandRURU 文 章=================== 這個情況應該是buffer滿了造成 要不要試試看用timer來偵測buffer有沒有資料(有資料就接收) 這樣應該可以解決
編輯記錄
darppp 重新編輯於 2009-04-22 10:47:16, 註解 無‧
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
|
darppp
一般會員 發表:3 回覆:6 積分:1 註冊:2009-04-20 發送簡訊給我 |
|
2007
中階會員 發表:54 回覆:90 積分:98 註冊:2008-08-12 發送簡訊給我 |
請問一下:
B產生無限迴圈傳值 <--你是用 while 去做無限迴圈嗎?? 如果是話, 把它改成 timer ,Interval = 300 以上 ,我想應該不用太快吧,也許知道狀態最大容許時間一秒以上呢!! timer 也可以設一個 b_flag ,當 b_flag = true 就一直執行(問狀態), 當按下A鍵,或其它C、D、E .....鍵時, 記住 b_flag 的狀態。 bool flagTemp = b_flag , b_flag = false; (先暫停 問狀態)。 當 A 鍵......內的程式跑完了, 在設為 b_flag = flagTemp 試看看!!! ===================引 用 darppp 文 章=================== 我是BCB新手 最近看書與網路寫了對RS232控制程式 測試過全部都可以執行 傳值與資料都OK 但是卻不能同時下2筆以上資料 這是正常的嗎??還是說有方法可以解決 舉我的例子來說 我有個A按鈕 丟一個指令給RS232對機器下動作~此時機器也會丟一個回傳確認指令 另外我還有個B按鈕 這是要希望機器能狀態回報用的 所以要一值丟命令讓機器一值回報現在狀態 問題在我這2個按鈕個別使用或是輪流使用都OK 但是先使用B產生無限迴圈傳值後 再按A就會當掉 有沒有辦法讓按下A鈕之後B自動中斷 再A執行完後B自動繼續呢??? PS.機器端是現成品無法對其軟體作修改 不好意思~我真的是超新手~~發問不明確的地方請多多指教 |
darppp
一般會員 發表:3 回覆:6 積分:1 註冊:2009-04-20 發送簡訊給我 |
><....
我太嫩了 用語法太簡單了 TIMER沒用過 我貼一下我的語法 //A按鈕 void __fastcall TForm1::Button1Click(TObject *Sender) { Send(Edit1->Text); //A按鈕 //B按鈕 void __fastcall TForm1::Shape1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { do { Send("RE"); String Q=Buf; String Q1=Q.SubString(3,10); Edit4->Text=Q1; Sleep(1000); } while(1); } //B按鈕 請高手指導一下 若小弟能把程式弄懂 必定發範例文供大家參考~~ ===================引 用 2007 文 章=================== 請問一下: B產生無限迴圈傳值 <--你是用 while 去做無限迴圈嗎?? 如果是話, 把它改成 timer ,Interval = 300 以上 ,我想應該不用太快吧,也許知道狀態最大容許時間一秒以上呢!! timer 也可以設一個 b_flag ,當 b_flag = true 就一直執行(問狀態), 當按下A鍵,或其它C、D、E .....鍵時, 記住 b_flag 的狀態。 bool flagTemp = b_flag , b_flag = false; (先暫停 問狀態)。 當 A 鍵......內的程式跑完了, 在設為 b_flag = flagTemp 試看看!!! ===================引 用 darppp 文 章=================== 我是BCB新手 最近看書與網路寫了對RS232控制程式 測試過全部都可以執行 傳值與資料都OK 但是卻不能同時下2筆以上資料 這是正常的嗎??還是說有方法可以解決 舉我的例子來說 我有個A按鈕 丟一個指令給RS232對機器下動作~此時機器也會丟一個回傳確認指令 另外我還有個B按鈕 這是要希望機器能狀態回報用的 所以要一值丟命令讓機器一值回報現在狀態 問題在我這2個按鈕個別使用或是輪流使用都OK 但是先使用B產生無限迴圈傳值後 再按A就會當掉 有沒有辦法讓按下A鈕之後B自動中斷 再A執行完後B自動繼續呢??? PS.機器端是現成品無法對其軟體作修改 不好意思~我真的是超新手~~發問不明確的地方請多多指教 |
2007
中階會員 發表:54 回覆:90 積分:98 註冊:2008-08-12 發送簡訊給我 |
可以看一下你的 Send 怎麼寫的嗎??
Send("RE"); String Q=Buf; ===================引 用 darppp 文 章=================== ><.... 我太嫩了 用語法太簡單了 TIMER沒用過 我貼一下我的語法 //A按鈕 void __fastcall TForm1::Button1Click(TObject *Sender) { Send(Edit1->Text); //A按鈕 //B按鈕 void __fastcall TForm1::Shape1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { do { Send("RE"); String Q=Buf; String Q1=Q.SubString(3,10); Edit4->Text=Q1; Sleep(1000); } while(1); } //B按鈕 請高手指導一下 若小弟能把程式弄懂 必定發範例文供大家參考~~ ===================引 用 2007 文 章=================== |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |