讀取電子秤的RS232C Data時為何長度不符 |
缺席
|
leonruxi
一般會員 發表:9 回覆:5 積分:2 註冊:2004-08-09 發送簡訊給我 |
標準資料格式: ST,GS, 0.0010 ,kg(CR)(LF)........(P)(C)(S)(CR)(LF)
需要得到的資料: ST,GS, 0.0010 ,kg
實際得到的資料: ST,GS, 0.00 %(亂碼) 或 0.0010 ,kg GS,...
檢查過Baudrate:9600 ,Parity: none, comport: com1, stopbits: 1 stopbit
使用component為廠商自己開發的commport 讀取資料的程式procedure如下:
function TComPort.ReadString(var Str: String; Count: Integer): Integer;
var Overlapped: TOverlapped;
BytesRead: Integer;
begin
SetLength(Str, Count);
FillChar(Overlapped, SizeOf(Overlapped), 0);
Overlapped.hEvent := CreateEvent(nil, True, True, nil);
ReadFile(ComHandle, Str[1], Count, DWord(BytesRead), @Overlapped);
WaitForSingleObject(Overlapped.hEvent, INFINITE);
if not GetOverlappedResult(ComHandle, Overlapped, DWord(BytesRead), False) then
raise EWriteError('Unable to write to port: ' LastErr);
CloseHandle(Overlapped.hEvent);
SetLength(Str, BytesRead);
Result := BytesRead;
end; 請各位大大幫助,感激......
|
GeminiLin
一般會員 發表:12 回覆:24 積分:12 註冊:2002-12-26 發送簡訊給我 |
很難回答您的問題,因為沒有很明確的東西可以測,建議先以WINDOWS內建的超級終端機,設定好各式的設定值,如9600,N,8,1,還有硬體流量控制等數值,是否與廠商給的數值相同。
在來直接在超級終端機下指令讀取,看看是否數值傳回正常,先排除廠商因素,再來就是自己的部份,RS-232線材所經過的地方是否有干擾源,建議買好一點防干擾的RS232線材。
如果在超級終端機下指令是正常的話,自己的程式還是異常,建議使用SPCOMM元件看看,站內都有可以搜尋到使用方法目前我在工業控制及實驗設備使用皆正常,可以試試!!
|
odyaho
初階會員 發表:60 回覆:104 積分:42 註冊:2005-02-15 發送簡訊給我 |
|
dhliu
一般會員 發表:18 回覆:24 積分:8 註冊:2003-03-05 發送簡訊給我 |
您好
我是用 BCB 6.0 的, Delphi 的程式我讀起來蠻吃力的...
之前曾經做過個讀取電子秤的程式, 我用的方法很笨, 我只用了個 timer 去掃 RS232 的資料, 電子秤上一般應該可以設定送出的資料時間, 我用 timer 去掃有個缺點, 常常會讀到不是資料的資料, 這些讀不到的資料我就當垃圾不處理了... 這算是題外話了... 讀取電子秤的部分應該是完全不需要用到廠商的 component, 只要 CreateFile, ReadFile 就可以勝任了, 除非您還有其他的功能. 另外 odyaho 兄提到的 delay 問題也是有可能的, 不知您有否設定 ReadTimeout 的時間?
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
ATEIN
高階會員 發表:105 回覆:320 積分:125 註冊:2002-07-05 發送簡訊給我 |
|
pokemf
一般會員 發表:5 回覆:12 積分:3 註冊:2002-05-24 發送簡訊給我 |
|
yang1032
一般會員 發表:1 回覆:1 積分:0 註冊:2007-06-26 發送簡訊給我 |
標準資料格式: ST,GS, 0.0010 ,kg(CR)(LF)........(P)(C)(S)(CR)(LF)
需要得到的資料: ST,GS, 0.0010 ,kg 實際得到的資料: ST,GS, 0.00 %(亂碼) 或 0.0010 ,kg GS,... 我曾經用 foxpro 使用MsComm 元件 寫過三家公司軟體: 問題出在讀取磅秤資料無法每次都很正確, 故必須讀取較長的資料經過比對,如不正確請重新讀取再比對,直到正確為止, 放心經驗中比對不會超過二次,電腦很快客戶不會感覺 |
chenyk
高階會員 發表:14 回覆:95 積分:171 註冊:2002-07-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |