单片机串口接收命令的程序怎样写

单片机串口接收命令的程序怎样写,第1张

先初始化串口,再接收数据就可以了。比如:

#include<reg51h>

#define uchar unsigned char

uchar rec;

bit flag=0;

void uart() interrupt 4

{

if(RI)

{

RI=0;

rec=SBUF;

flag=1;

}

}

main()

{

TMOD=0x20;

TH1=0xfd;

TL1=0xfd;

SCON=0x50;

TR1=1;

ES=1;

EA=1;

while(1)

{

if(flag)

{

case

case

default:break

}

}

}

不是 有 接收 事件处理函数 吗?

serialport 实现过程

(1)新建一个项目,命名为Ex13_01,默认窗体为Form1。

(2)在Form1窗体中,主要添加两个Button控件,分别用于执行发送数据和接受数据,添加两个TextBox控件,用于输入发送数据和显示接收数据。

(3)主要程序代码。

private void button1_Click(object sender, EventArgs e)

{

serialPort1PortName = "COM1";

serialPort1BaudRate = 9600;

serialPort1Open();

byte[] data = EncodingUnicodeGetBytes(textBox1Text);

string str = ConvertToBase64String(data);

serialPort1WriteLine(str);

MessageBoxShow("数据发送成功!","系统提示");

}

private void button2_Click(object sender, EventArgs e)

{

byte[] data = ConvertFromBase64String(serialPort1ReadLine());

textBox2Text = EncodingUnicodeGetString(data);

serialPort1Close();

MessageBoxShow("数据接收成功!","系统提示");

}

没有具体地看,但是你说9600波特率,一个字节是100us就不对了,9600波特率是指位速,8位才一个字节,再加上起始位和停止位,那就是10位,所以一个字节需要整整1ms的时间,所以1ms读2个字节是不可能的,看看这个有没有帮助。

//创建一个串口通讯

SerialPort CurrentPort = null;

CurrentPort = new SerialPort();

                CurrentPortReadBufferSize = 128;

                CurrentPortPortName = comName;  //端口号 

                CurrentPortBaudRate = bandRate; //比特率 

                CurrentPortParity =parity;//奇偶校验 

                CurrentPortStopBits = stop;//停止位 

                CurrentPortDataBits = databit;//数据位

                CurrentPortReadTimeout = 1000; //读超时,即在1000内未读到数据就引起超时异常 

                //绑定数据接收事件,因为发送是被动的,所以你无法主动去获取别人发送的代码,只能通过这个事件来处理

                CurrentPortDataReceived += Sp_DataReceived;

                CurrentPortOpen();

                

                

                

           定义一个变量 byte[] receiveStr;          

                

         //绑定的事件处理函数

         private static void Sp_DataReceived(object sender, SystemIOPortsSerialDataReceivedEventArgs e)

        {

            SerialPort sp = sender as SerialPort;

            if (sp == null)

                return;

            byte[] readBuffer = new byte[spReadBufferSize];

            spRead(readBuffer, 0, readBufferLength);

            

            //赋值

            receiveStr=readBuffer;//当然你可以通过转换将byte[]转换为字符串。

        }

        

        

        //你要求的按钮事件可以这么写

         private void button1_Click(object sender, EventArgs e)

         {

                 if(receiveStr!=null)

                 {

                     变量  xxx=receiveStr;

                 }

         }

以上就是关于单片机串口接收命令的程序怎样写全部的内容,包括:单片机串口接收命令的程序怎样写、serialport怎么接收串口数据、STM32串口接受数据程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9562046.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存