//创建一个串口通讯
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;
}
}
中断:指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。
void CLK_INIT(void)
{
CLK_CKDIVR = 0x19; /HSI/8、CPU = 2/2,1M速度/
CLK_PCKENR1 = 0x04; /只开启uart1的时钟/
CLK_PCKENR2 = 0x00; /打开ADC的时钟/
}
void IO_INIT(void)
{
PA_CR1 = 0x00; /推挽输出/
PA_CR2 = 0x00; /最大输出为2MHZ,禁止外部中断/
PA_DDR |= 0x20; /PA5为输出/
}
void UART1_INIT(void)
{
UART1_BRR2 = 0x00;
UART1_BRR1 = 0x0d; /2M的Fmaster下9600的波特率/
UART1_DR = 0xaa;
UART1_CR2 = 0x08; /发送完寄存器空,发送使能/
UART1_CR3 = 0x00; /1个停止位/
}
#pragma vector = UART1_T_TXE_vector
__interrupt __root void UART1_TX(void)
{
UART1_SR = 0x00;
UART1_DR = 0xaa;
}
只作为参考,希望对您有帮助,谢谢!
以上就是关于关于串口中断发送的问题。全部的内容,包括:关于串口中断发送的问题。、串口通信中的中断是什么意思、STM8S207_UART1串口发送中断程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)