未知昵称 2017-11-20 11:15 采纳率: 66.7%
浏览 1194
已采纳

C#串口发送数据问题。

打开一个bin文件,读取里面的内容,然后将内容按照每组256个字节进行分组,
byte[] buf = new byte[];发送第一组256个字节内容,前面加上FF B5 最终变成
FF B5 +256 总共258个内容进行发送,然后等待收到回复确认(可以用timer控件),
开始发送第二组数据FF B6 +256字节 总共258个发送出去。然后等待收到回复确认,开始发送第三组内容 FF B5 +256,收到回复,再发送FF B6 +256字节,收到回复,以此下去,直到发完所有字节。

  • 写回答

2条回答 默认 最新

  • sanyuni 2017-11-21 11:50
    关注

    class Program
    {
    static void Main(string[] args)
    {

            SerialPort com = new SerialPort() { BaudRate = 115200, PortName = "COM1", DataBits = 8 };
            com.DataReceived += Com_DataReceived;
            com.Open();
            //读取二进制文件
            FileStream binStream = File.OpenRead("filepath");
            //发送buffer
            byte[] buffer = new byte[258];
            buffer[0] = 0XFF;
            buffer[1] = 0XB5;
            SetLock(true);
            //读数据到发送buffer中
            while (binStream.Read(buffer, 2, 256) != 0)
            {
                //等待回复
                while (!GetStatus())
                {
                    Thread.Sleep(10);
                }
                //发送
                com.Write(buffer, 0, buffer.Length);
                SetLock(false);
            }
        }
    
        static bool cansend = true;
        static object sendLock = new object();
        static void SetLock(bool status)
        {
            lock(sendLock)
            {
                cansend = status;
            }
        }
    
        static bool GetStatus()
        {
            bool status = false;
            lock (sendLock)
            {
                status = cansend;
            }
            return status;
        }
        private static void Com_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            //接收回复
            SetLock(true);
        }
    
    
                未测试,不清楚能否跑通
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于#vscode#的问题:ESP32开发板对接MQTT实现小灯泡的开关
  • ¥15 TMC2209串口模式下读取不到寄存器的值串口助手蓝色字体是发过去的消息,绿色字体是收到的消息,第二行发送读取寄存器的指令但是没有读取到寄存器的值串口助手如下图:接线如下图,如何解决?
  • ¥15 高通安卓11提取完整线刷包软件,或者优博讯dt50顺丰刷机包
  • ¥20 C,有个译码器,换了信道就跑不出原来数据
  • ¥15 MIMIC数据库安装问题
  • ¥60 基于JTag协议开发Fpga下载器上位机,哪位大🐂有偿指导?
  • ¥20 全书网Java爬取数据
  • ¥15 怎么获取红包封面的原始链接,并且获取红包封面序列号
  • ¥100 微信小程序跑脚本授权的问题
  • ¥100 房产抖音小程序苹果搜不到安卓可以付费悬赏