问题描述
写了一个操作LED显示的东西,现在要加上通讯失败日志,所以采用了事件通知的方式,如果接收到失败事件就记录到数据库里,现在的问题是怎么取得通讯失败LED显示器的IP地址,下面是原事件VC结构typedefstructDEVICEPARAM{DWORDdevType;DWORDSpeed;DWORDComPort;DWORDFlowCon;DWORDlocPort;DWORDrmtPort;DWORDmemory;BYTEPhone[32];DWORDReserved[5];}TDeviceParam,*PDeviceParam;typedefstructNOTIFYMESSAGE{longMessage;longCommand;longResult;longStatus;longAddress;longSize;char*Buffer;TDeviceParamparam;charHost[16];longport;}TNotifyMessage,*PNotifyMessage;,我把他们转到C#下[StructLayout(LayoutKind.Sequential)]structTDeviceParam{publicushortdevType;publicushortSpeed;publicushortComPort;publicushortFlowCon;publicushortlocPort;publicushortrmtPort;publicushortmemory;[MarshalAs(UnmanagedType.ByValArray,SizeConst=32)]publicbyte[]Phone;[MarshalAs(UnmanagedType.ByValArray,SizeConst=5)]publicushort[]Reserved;}[StructLayout(LayoutKind.Sequential)]structTNotifyMessage{publicintMessage;publicintCommand;publicintResult;publicintStatus;publicintAddress;publicintSize;publicIntPtrBuffer;publicTDeviceParamparam;[MarshalAs(UnmanagedType.ByValArray,SizeConst=16)]publicbyte[]Host;publicintport;}数据类型应该没问题,因为TNotifyMessage的Message与TDeviceParam的locPort与rmtPort已经是对的不知有没有人做过这方面的东西,在这结构里有没有通讯失败的LED相关信息,比如IP地址。
解决方案
解决方案二:
以下为厂商提供的Delphi与VB结构,与VC不一样Delphi:TypeTDeviceParam=PackedRecorddevType:DWord;Speed:DWord;ComPort:DWord;FlowCon:DWord;locPort:DWord;rmtPort:DWord;memory:DWord;Reserved:Array[0..4]ofDWord;End;PDeviceParam=^TDeviceParam;TNotifyMessage=PackedRecordMessage:Integer;Command:Integer;Result:Integer;Status:Integer;Address:Integer;Size:Integer;Buffer:Pointer;Param:TDeviceParam;Host:Array[0..15]ofChar;Port:Integer;End;PNotifyMessage=^TNotifyMessage;VB:TypeTDeviceParamdevTypeAsLongspeedAsLongComPortAsLongFlowConAsLonglocPortAsLongrmtPortAsLongmemoryAsLongReserved(5)AsLongEndTypeTypeTNotifyMessageMessageAsLongCommandAsLongResultAsLongStatusAsLongAddressAsLongSizeAsLongBufferAsLongparamAsTDeviceParamHost(16)AsBytePortAsLongEndType给卖我们LED的厂家打电话他们的回答是这些东西是买别人的,他们也不知道,郁闷!说给我们找对方电话,结果石沉大海!!!!
解决方案三:
当然也可以用线程暂停的方式去实现这种功能,感觉这种方式太傻,知道的请e-mail我:hangfei1234@163.com