|
你好,请按照如下代码替换winformdemo工程下对应文件中的接口,然后再测试一下接收串口数据的16进制显示。- 串口数据接收;
- 1、EventHandler.cs 文件:
- public delegate void BVCU_TspDialog_OnData(IntPtr dialog, IntPtr data, int len);
- void TspDialog_onData(IntPtr dialog, IntPtr pTspData, int len)
- {
- if (pTspData == IntPtr.Zero || len <= 0)
- {
- return;
- }
- byte[] byteTspData = new byte[len];
- Marshal.Copy(pTspData, byteTspData, 0, byteTspData.Length);
- m_dialog.onTspData(dialog, byteTspData);
- }
- 2、Dialog.cs 文件:
- delegate void OnGetTspData(IntPtr dialog, byte[] byteTspData);
- OnGetTspData deleGetTspData;
- public void onTspData(IntPtr dialog, byte[] byteTspData)
- {
- if (null == deleGetTspData)
- {
- deleGetTspData = new OnGetTspData(procGetTspData);
- }
- m_mainForm.BeginInvoke(deleGetTspData, new object[] { dialog, byteTspData});
- }
- public void procGetTspData(IntPtr dialog, byte[] byteTspData)
- {
- foreach (OneDialog dlg in m_tspDialogs)
- {
- if (dlg.dialogHandle == dialog)
- {
- m_mainForm.onGetTspData(dlg.pu.id, dlg.channelNo, byteTspData);
- return;
- }
- }
- }
- 3、MainWinForm.cs文件:
- /// <summary>
- /// 获得Tsp数据
- /// </summary>
- public void onGetTspData(string puId, int iChannelNum, byte[] byteTspData)
- {
- // 获取16进制字符串
- string strHex = BytesToString_HexUI(byteTspData,true);
- }
- /// <summary>将字节数组转换为字符串</summary>
- /// <param name="input"></param>
- /// <param name="hex_UI_string">true: 16进制字符串, false: UI字符串</param>
- /// <returns></returns>
- public string BytesToString_HexUI(byte[] input, bool hex_UI_string = false)
- {
- if (hex_UI_string)
- {
- return BytesToHexString(input);
- }
- else
- {
- return BytesToUIString(input);
- }
- }
- /// <summary>字节数组转换为16进制字符串</summary>
- public string BytesToHexString(byte[] data)
- {
- try
- {
- return BitConverter.ToString(data).Replace('-', ' ');
- }
- catch (Exception e)
- {
- return string.Empty;
- }
- }
- /// <summary>字节数组转换为界面字符串</summary>
- public string BytesToUIString(byte[] data)
- {
- try
- {
- return Encoding.UTF8.GetString(data);
- }
- catch (Exception e)
- {
- return string.Empty;
- }
- }
copycode
|
|