我使用C++ Builder 6與安裝TComPort組件和Arduino。我想要做的事情如下:等待,直到例程結束Arduino
for (int a = 0; a < n; a++){
Edit1->Text = "first";
ComPort->WriteString("a");
//wait till process on Arduino is finished
//receive char from Arduino and continue
Edit1->Text = "scnd";
ComPort->WriteString("b");
//wait till process on Arduino is finished
}
Arduino的代碼(情況):
case 'b':
digitalWrite(ledPin2, HIGH);
delay(1000);
Serial.write('2');
digitalWrite(ledPin2, LOW);
break;
我試圖用OnRxChar但與Arduino的接收字符串的問題。有時他們是「空白」,有時他們是正確的(2)。 有人能指導我什麼是我可以使用的最佳功能?
編輯: COMPORT有一個功能Read(void *,int,bool)
,但我不知道什麼void*
和int
代表(我是新手)。
編輯2:解決方案! 這就是我所做的:
1st function; Timer1-> Enabled = false; {instructions}; ComPort-> Write('a');
第二個函數OnRxChar; {instructions}; Timer1-> Enabled = true;
第三功能定時器; 回到第一個功能
當我使用睡眠,而不是定時器整個應用程序凍結。我希望這會對某人有用:)我花了大概一週的時間弄清楚:P
當我向Arduino發送字符串時,它打開led。我的問題是如何等待,直到Arduino進程結束並移動到C++中的下一行。 – Mike
對我的更新有幫助嗎? – zmo
我試圖用while循環做,但程序凍結時,它進入循環內部:/我找到了另一種解決方案:我使用ComPort1-> Read(buff,1,true);和程序等待字符(這太棒了!),但我需要爲程序添加ShowMessage以在Read函數下執行行,否則它只是跳過它們:/ – Mike