用pb 的mswinsck控制元件連接一臺醫療設備HL7協議,除錯程式debug時都能把傳輸的資料接過來,直接跑程式去傳輸不過來,百思不得其解。其中有寫日志的代碼,在檔案夾里能查詢到資料源日志有資料傳過來。請高人指點
String ls_receiver,ls_data,ls_temp,ls_graphall,ls_graph,ls_outdata,ls_xx
String lns_string[]
Long ll_num,ll_i,ll_at,ll_length,ll_j
string ls_sour1,ls_sour2,ls_sour3
winsock.Object.GetData(ref ls_receiver)
is_tempstr = ls_receiver
//messagebox('is_tempstr',is_tempstr)
IF cbx_1.Checked THEN
gf_write_log(is_deviceid,'receive-->'+ls_receiver)
END IF
//入庫
if pos(is_tempstr,'M') > 0 then
insert into l_source (soufull , deviceid,ComputerName ) values (:is_tempstr,:is_deviceid,:Gs_ComputerName) ;
commit ;
gf_write_log(is_deviceid + '-original',is_tempstr)//寫源資料日志
is_tempstr = '' //置空
end if
uj5u.com熱心網友回復:
看你的代碼應該只有if pos(is_tempstr,'M') > 0 then 這里可能有問題,回傳的資料不一定有大寫Muj5u.com熱心網友回復:
我debug到這里沒問題,有M值的,就是單步debug沒問題,就是直接運行程式時就過不來資料
uj5u.com熱心網友回復:
按道理PB應該不會出現android那樣的函式運行后不等執行完成就直接往下一步代碼進行,你可以在頁面輸出那里設定下等待看看是不是等待執行的,先把 ls_receiver="" 然后 winsock.Object.GetData(ref ls_receiver)前加入一個datetime輸出到文本框1,winsock.Object.GetData(ref ls_receiver)后加入一個datetime輸出到文本框2,再寫一個 do while ls_receiver="" Yield ( )loop 再加入加入一個datetime輸出到文本框3 , 看看是不是等待完成才執行后面的,如果不是的化就需要進行等待了
uj5u.com熱心網友回復:
昨天后來改了下winsock的dataarrival事件的一個代碼以前是pos(is_temp,'M')后來改成pos(is_temp,char(77))uj5u.com熱心網友回復:
日志里顯示是有資料的嗎?uj5u.com熱心網友回復:
樓主意思是一步一步DEBUG執行時可以,讓運行時自動連續執行就沒有資料,應該是winsock.Object.GetData(ref ls_receiver) 異步執行了,不等待 ls_receiver 回傳結果就往下跑了。uj5u.com熱心網友回復:
HL7協議傳輸資料并不一定是同時傳過來的你要根據結束符去判斷資料的完整性,否則資料不完整,決議就有問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/8555.html
標籤:控件與界面
上一篇:powerapps 搜索功能
下一篇:萌新求指引
