DLT645.zip
工具
源碼
規約解析
DL/T645-07:
數據幀格式:
注意事項:
(1)前導字節-一般在傳輸幀信息前,都要有0~4個FE不等,所以這里要注意,對於主站來說,直接發送4個FE作為前導字節即可。而從站回復,就不一定了,根據廠家不同而不同,
我見過回復信息中,沒有FE的,也有4個FE的,所以對於接受程序,一定要慎重。
(2)傳輸次序-所有的數據項都是先傳低字節,再傳高字節,這里的數據項,主要涉及到地址域和數據域,因為其他都是1個字節。
(3)差錯控制-通信偶校驗。
(4)數據與傳輸運算方式:主站加0x33,從站減0x33(為嘛這么定義,可能是考慮BCD碼吧)
網上下載的測試工具
源碼工具.net開發
調用代碼
private void btnSend_Click(object sender, EventArgs e)
{
string outmsg = string.Empty;
string addr = txtAddr.Text.Trim();
string data = txtData.Text.Trim();
if (string.IsNullOrEmpty(addr))
{
AddMessage("電表地址不允許為空");
return;
}
if (string.IsNullOrEmpty(data))
{
AddMessage("數據標識不允許為空");
return;
}
MeterEntity entity = dlt.Read(addr, data);
AddMessage("send " + entity.Send);
if (!string.IsNullOrEmpty(entity.OutMsg))
{
AddMessage("執行出錯,errmsg=" + entity.OutMsg);
}
else
{
AddMessage("recv " + entity.Recv);
AddMessage("analysis,Addr=" + entity.Addr + ",Control=" + entity.Control + ",Flg=" + entity.DataFlg + ",Data=" + entity.Data);
}
}