哪位大神能把这个代码转为C#代码或者C++代码,或者VB.net代码,
unit Unit_LhmTest;interfaceuses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, Unit_LonHandMiniLib,
  Vcl.Mask, Vcl.ComCtrls, IdGlobal, Vcl.ExtCtrls;type
  TForm1 = class(TForm)
    grp_udp: TGroupBox;
    btn3: TBitBtn;
    lv_dev: TListView;
    grp_log: TGroupBox;
    redt1: TRichEdit;
    btn7: TBitBtn;
    grp_tcp: TGroupBox;
    btn6: TBitBtn;
    btn4: TBitBtn;
    grp_connect: TGroupBox;
    btn5: TBitBtn;
    lbledt_mac: TLabeledEdit;
    lbledt_ip: TLabeledEdit;
    lbledt_port: TLabeledEdit;
    lbledt_psd: TLabeledEdit;
    lbledt_mac_connected: TLabeledEdit;
    lbledt_Data: TLabeledEdit;
    procedure btn3Click(Sender: TObject);
    procedure btn4Click(Sender: TObject);
    procedure btn5Click(Sender: TObject);
    procedure btn6Click(Sender: TObject);
    procedure redt1Change(Sender: TObject);
    procedure btn7Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure lv_devClick(Sender: TObject);
  private
    lhm: ILhm;
    procedure FRcvSearchResult(aData: TIdBytes);
    procedure FRcvDevData(aData: TIdBytes; aMac: PChar);
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
  lhm := LhmCreate;
  lhm.SetRcvSearchResultProc(FRcvSearchResult);
  lhm.SetRcvDevDataProc(FRcvDevData);
end;procedure Log(aStr: string);
begin
  Form1.redt1.Lines.Add(aStr);
end;{ * TBUF4 to IP * }function Buf42IP(ABuf: PBUF4): string;
var
  i: Integer;
begin
  Result := '';
  for i := 0 to SizeOf(TBUF4) - 1 do
    if i = SizeOf(TBUF4) - 1 then
      Result := Result + IntToStr(ABuf[i])
    else
      Result := Result + IntToStr(ABuf[i]) + '.';
end;function Buf62Mac(Value: TBUF6): string;
var
  i: Integer;
begin
  Result := '';
  for i := 0 to Length(Value) - 1 do
    Result := Result + IntToHex(Value[i], 2)
end;function Buf2HexStr(aBuf: TIdBytes): string;
var
  i: Integer;
begin
  Result := '';
  for i := 0 to Length(aBuf) - 1 do
    Result := Result + IntToHex(aBuf[i], 2) + ' ';
end;function HexStr2Buf(aStr: string): TIdBytes;
var
  i: Integer;
  len: Integer;
begin
  Result := nil;
  aStr := StringReplace(aStr, ' ', '', [rfReplaceAll]);
  aStr := StringReplace(aStr, '0x', '', [rfReplaceAll]);
  aStr := StringReplace(aStr, '$', '', [rfReplaceAll]);
  len := Length(aStr);
  SetLength(Result, len div 2);
  for i := 0 to len - 1 do
    if Odd(i) then
      Result[i div 2] := StrToIntDef('$' + aStr[i] + aStr[i + 1], 1);
end;procedure HexStrToBuf(var aBuf: TIdBytes; SourStr: string; Start, Count: Integer);
var
  x: Integer;
begin
  SourStr := StringReplace(SourStr, ' ', '', [rfReplaceAll]);
  for x := 0 to 5 do
    aBuf[Start + x] := ord(SourStr[x + 1]);
end;procedure TForm1.btn3Click(Sender: TObject);
begin
  lv_dev.Clear;
  lhm.SearchDev;
end;{* remove dev *}procedure TForm1.btn4Click(Sender: TObject);
var
  mac: PChar;
begin
  mac := PChar(lbledt_mac.Text);
  if mac = '' then
    Exit;
  lhm.RemoveDev(mac);
end;{* connect dev *}procedure TForm1.btn5Click(Sender: TObject);
var
  mac, ip, port, psd: PChar;
begin
  mac := PChar(lbledt_mac.Text);
  ip := PChar(lbledt_ip.Text);
  port := PChar(lbledt_port.Text);
  psd := PChar(lbledt_psd.Text);
  if (mac = '') or (ip = '') or (port = '') or (psd = '') then
    Exit;
  lhm.ConnectDev(mac, ip, port, psd)
end;{* send data to device by mac *}procedure TForm1.btn6Click(Sender: TObject);
var
  DataBuf: TIdBytes;
  macStr: PChar;
begin
  if (lbledt_Data.Text = '') or (lbledt_mac_connected.Text = '') then
    Exit;
  DataBuf := HexStr2Buf(lbledt_Data.Text);
  macStr := PChar(lbledt_mac_connected.Text);
  lhm.SendDataByMac(DataBuf, macStr);
end;procedure TForm1.btn7Click(Sender: TObject);
begin
  redt1.Clear;
end;procedure TForm1.FRcvSearchResult(aData: TIdBytes);
var
  RxRcd: TUDPRcvRcd;
begin
  Log('RcvSearchResult: ' + Buf2HexStr(aData));
  BytesToRaw(AData, RxRcd, 36);
  with lv_dev.Items.Add do
  begin
    Caption := Buf62Mac(RxRcd.DevMAC);
    SubItems.Add(Buf42IP(@RxRcd.DevIP));
  end;
end;procedure TForm1.lv_devClick(Sender: TObject);
begin
  if lv_dev.ItemIndex = -1 then
    Exit;
  lbledt_mac.Text := lv_dev.Selected.Caption;
  lbledt_ip.Text := lv_dev.Selected.SubItems[0];
  lbledt_mac_connected.Text := lv_dev.Selected.Caption;
end;procedure TForm1.redt1Change(Sender: TObject);
begin
  SendMessage(TRichEdit(Sender).Handle, WM_VSCROLL, SB_BOTTOM, 0)
end;
procedure TForm1.FRcvDevData(aData: TIdBytes; aMac: PChar);
begin  Log('RcvDevData from (' + aMac + '): ' + Buf2HexStr(aData));
end;end.

解决方案 »

  1.   

    主要是这段代码,由delphi 转换为其他语言
    unit Unit_LonHandMiniLib;interface
    uses
      IdGlobal;
    type
    //  TIdBytes = array of Byte;
      TBUF2 = array[0..1] of Byte;
      TBUF3 = array[0..2] of Byte;
      TBUF4 = array[0..3] of Byte;
      PBUF4 = ^TBUF4;
      TBUF6 = array[0..5] of Byte;
      TBUF8 = array[0..7] of Byte;
      TBUF16 = array[0..15] of Byte;  { * UDP Received data Struct * }
      TUDPRcvRcd = record
        { * Head * }
        Head: TBUF3;
        { * Device Type * }
        DevType: Byte;
        { * Device ID * }
        DevID: Byte;
        { * Device IP * }
        DevIP: TBUF4;
        { * Device MAC * }
        DevMAC: TBUF6;
        { * Software Version * }
        SoftVer: TBUF2;
        { * Hardware version * }
        HardVer: TBUF2;
        { * Device Name * }
        DevName: TBUF16;
        { * Check Sum * }
        CHK: Byte;
      end;  {* UDP receive Envent *}{* udp接收事件 *}
      TUdpReceiveDataEvent = procedure(aData: TIdBytes) of object;
      {* TCP receive Envent *}{* TCP接收事件 *}
      TIOTListRecive = procedure(aData: TIdBytes; aMac: PChar) of object;  ILhm = interface
        {-------------------------------------------------------------------------------
          名  称(ProcName): SearchDev
          作  用(Purpose ): 搜索局域网设备 (Search device on the LAN)
          参  数(Param   ):
          返回值(Return  ): Integer     0:Failure  1:Success
        -------------------------------------------------------------------------------}
        function SearchDev: Integer; stdcall;
        {-------------------------------------------------------------------------------
          名  称(ProcName): SetRcvSearchResultProc
          作  用(Purpose ): 设置udp接收回调函数 (Set receive UDP search result function)
          参  数(Param   ): aUdpReceiveDataEvent: TUdpReceiveDataEvent
          返回值(Return  ): Boolean
        -------------------------------------------------------------------------------}
        function SetRcvSearchResultProc(aUdpReceiveDataEvent: TUdpReceiveDataEvent): Boolean; stdcall;
        {-------------------------------------------------------------------------------
          名  称(ProcName): ConnectDev
          作  用(Purpose ): 通过mac、ip、port、psd连接设备 (connect device by mac,ip,port,psd)
          参  数(Param   ): aMac, aIp, aPort, aPsd: PChar
          返回值(Return  ): Boolean
        -------------------------------------------------------------------------------}
        function ConnectDev(aMac, aIp, aPort, aPsd: PChar): Boolean; stdcall;
        {-------------------------------------------------------------------------------
          名  称(ProcName): RemoveDev
          作  用(Purpose ): 通过mac移除设备连接  (remove device by mac)
          参  数(Param   ): aMac: PChar
          返回值(Return  ): Boolean
        -------------------------------------------------------------------------------}
        function RemoveDev(aMac: PChar): Boolean; stdcall;
        {-------------------------------------------------------------------------------
          名  称(ProcName): SendDataByMac
          作  用(Purpose ): 发送数据(字节数组)   (send data(arrar of byte) by mac)
          参  数(Param   ): aData: TIdBytes; aMac: PChar
          返回值(Return  ): Boolean
        -------------------------------------------------------------------------------}
        function SendDataByMac(aData: TIdBytes; aMac: PChar): Boolean; stdcall;
        {-------------------------------------------------------------------------------
          名  称(ProcName): SetRcvDevDataProc
          作  用(Purpose ): 设置tcp接收函数 (Set receive data from device function)
          参  数(Param   ): aIOTListRecive: TIOTListRecive
          返回值(Return  ): Boolean
        -------------------------------------------------------------------------------}
        function SetRcvDevDataProc(aIOTListRecive: TIOTListRecive): Boolean; stdcall;
      end;{==============================================================================
      名  称(ProcName): LhmCreate
      作  用(Purpose ): 首先 实例化接口   (!First!Crecte interface )
      参  数(Param   ): 无
      返回值(Return  ): ILhm
    ==============================================================================}
    function LhmCreate: ILhm; stdcall; external 'LonHandMini.dll' name 'LhmCreate';implementation
    end.