我正在使用舊的索尼愛立信手機編寫和閱讀AT命令的小型組件。 發送和寫入手機完全沒有問題,但是我希望能夠暫停我的SendATCmd功能並等待COM端口組件通知我有通知事件,然後再次恢復SendATCmd功能。如何在循環中發送更多數據之前等待COM端口接收事件
場景:我想獲得手機中短信的數量。 通常我只是告訴手機:嘿,你有多少條短信? ,手機會在通知事件中回覆。 這一切都很好。
但我真正想要做的是一樣的東西
if SendATCmd('CountSMS')>0 then
for 0 to SMSCount do
AddSMSToList;
爲SendATCmd的代碼如下所示:
function TSE_Z1010.SendATCmd(Cmd: string): TATResult;
begin
fCOMPort.PutString(Cmd); //Sending AT command
//Here is where I would like to pause this function
//wait for the fCOMPort to notify me when data is available
//and then resume this function again.
result:=fTMPATResult;
end;
我使用while循環試過,暫停,等等等等,但除了一件事之外沒有任何工作,那就是當我把ShowMessage放在暫停時。 我不知道ShowMessage如何在內部工作,但它似乎不會像while循環和暫停那樣暫停程序。
====================
修正了它。
我所要做的就是在使用條款中添加窗體,然後我加入,同時fTMPATResult.Full =假做Application.ProcessMessages;在我想暫停程序的部分。
「fTMPATResult」是其中輸入的COM端口的數據被存儲,在組件內的全局變量。
,如果你有一個答案,請添加它作爲一個答案,而不是作爲一個編輯的問題。 – 2012-01-29 07:46:50
它說我沒有足夠的分數來爲我自己的問題添加一個答案。 – xaid 2012-01-29 14:12:02
什麼是您使用的串行通信組件(fCOMPort)? – menjaraz 2012-01-29 17:35:45