串口发送请求,和接受数据 一

 /// <summary>
        /// Reading and writing.
        /// </summary>
        [DllImport("kernel32.dll", SetLastError = true)]
        internal static extern Boolean WriteFile(IntPtr fFile, Byte[] lpBuffer, UInt32 nNumberOfBytesToWrite,
            out UInt32 lpNumberOfBytesWritten, IntPtr lpOverlapped);


这个是来发送bytes到COM口。

 /// <summary>
        /// Queues bytes for transmission. 
        /// </summary>
        /// <param name="tosend">Array of bytes to be sent</param>
        public void Send(byte[] tosend)
        {
            uint sent = 0;
            CheckOnline();
            CheckResult();
            writeCount = tosend.GetLength(0);
            if (Win32Com.WriteFile(hPort, tosend, (uint)writeCount, out sent, ptrUWO))
            {
                writeCount -= (int)sent;
            }
            else
            {
                int error = Marshal.GetLastWin32Error() ;
                if (error != Win32Com.ERROR_IO_PENDING)
                {
                    ThrowException("Unexpected failure");
                }
                //else
                //{
                //    DateTime maxTime = DateTime.Now.AddSeconds(2);
                //    while (maxTime > DateTime.Now && sent!=6)
                //    {                       
                //        Win32Com.GetOverlappedResult(hPort, ptrUWO, out sent, false);
                //    }                   
                //}
            }
        }


 

在安卓系统中,串口通信通常通过使用USB转串口适配器来实现。要控制串口发送和接收16进制数据,需要使用到安卓的USB API和相应的串口通信库。以下是实现该功能的一般步骤: 1. 权限申请:确保你的应用具有使用设备USB接口的权限,在`AndroidManifest.xml`中添加以下权限: ```xml <uses-feature android:name="android.hardware.usb.host" /> ``` 2. USB设备识别与连接:通过`UsbManager`类识别和连接USB设备。首先获取`UsbManager`实例,然后查询已连接的USB设备。找到目标设备后,请求获取设备的访问权限。 3. 打开串口并配置参数:一旦获得了设备的访问权限,就可以打开一个`UsbDeviceConnection`。然后,使用适当的串口通信库(如Android Serial Port API或使用`UsbDeviceConnection`自己实现串口协议)来打开串口并设置串口参数,如波特率、数据位、停止位等。 4. 发送16进制数据:将要发送的16进制数据转换为字节数组,然后通过打开的串口连接发送出去。可以使用`UsbDeviceConnection.bulkTransfer()`方法进行数据发送。 5. 接收16进制数据:同样使用`UsbDeviceConnection.bulkTransfer()`方法,但是需要传入适当的缓冲区来接收数据。设置正确的超时时间以确保数据可以被及时接收。 6. 断开连接与资源释放:完成通信后,应断开串口连接,并释放所有占用的资源,包括USB设备连接和权限等。 请注意,实现上述功能需要有一定的安卓开发经验和对USB通信协议的理解。此外,安卓的USB通信需要在有用户交互的情况下进行,否则无法直接进行USB通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值