📄 comport.c
字号:
#include "common.h"
byte RTBuf[MAX_COM_BUF_SIZE];//串口缓冲区
fastram byte RTFlag, //串口状态标志
RTLen, //串口数据长度
RTPtr; //串口收发指针
//串口发送
void ComSend()
{
if(RTPtr < RTLen) //数据未发完
{
WriteCom(RTBuf[RTPtr]); //发送下一个字节
RTPtr++;
}
else
{
StopComSend(); //停止发送
RTFlag = 0; //设置接收标志
}
}
//串口接收
void ComReceive(byte dat)
{
//正在处理数据中,不再接收
if (RTFlag > 1)
{
return ;
}
if (RTFlag == 0)
{
if (dat == FRAMEHEAD) //收到帧头
{
RTBuf[0] = FRAMEHEAD;
RTPtr = 1;
RTFlag = 1;
RTLen = 5;
}
return ;
}
else
{
RTBuf[RTPtr] = dat;
RTPtr++;
if (RTPtr >= RTLen)//接收到足够数据
{
RTFlag = 2;
return ;
}
if (RTPtr >= MAX_COM_BUF_SIZE)//意外处理命令超长
{
RTFlag = 0;
return ;
}
}
}
//串口分析
void ComAnalyse()
{
if(RTFlag != 2)return;
if(RTBuf[2] != 0x35)
{
RTFlag = 0;
return;
}
RTFlag = 3;
switch(RTBuf[1])
{
case 0x31:
P0 = 1;
break;
case 0x32:
P0 = 2;
break;
case 0x33:
P0 = 3;
break;
default:
RTFlag = 0;
return;
}
RTBuf[1] = RTBuf[1] + 0x80;
RTBuf[5] = RTBuf[4] + 1;
RTBuf[6] = RTBuf[4] + 2;
RTBuf[7] = RTBuf[4] + 3;
RTLen = 8;
RTPtr = 0;
LED = !LED; //发送数据指示
StartComSend();//启动发送
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -