您的位置 首页 资料

C++Builder串口通讯规划(二)-发送字节包

一、组成1、PC机2、STM32F10x通过通过串口连接(由相应的硬件芯片支持:MAX323或USB转串口芯片等)。设计一个由PC机通过串口发送数据包的程

一、组成

1、PC机

2、STM32F10x

经过经过串口衔接(由相应的硬件芯片支撑:MAX323或USB转串口芯片等)。

规划一个由PC机经过串口发送数据包的程序。串口也可选用USB转串口。串口与单片机(stm32F10x通讯)。单片机程序是收到数据后再经过串口发回去(发给PC机)。

二、规划工程

1、界面

一个mscomm控件;

一个memo1控件显现串口接纳的内容;

三个button别离用于串口初始化、发送、停止程序;


2、串口初始化化部分

//—————————————————————————
void __fastcall TForm1::Button1Click(TObject *Sender) //串口初始化
{
static st=0;
AnsiString s;
if(st==0)
{
try
{
Form1->MSComm1->_CommPort=3;//COM3( 选用USB转串口)
Form1->MSComm1->Settings=”9600,n,8,1″; //初始化串口
Form1->MSComm1->InputMode=type; //选用全局变量type设置传入数据的格局,0表明文本方式 ,1表明二进制格局,初始默许取为1。
Form1->MSComm1->RThreshold=1;
Form1->MSComm1->PortOpen=true; //翻开串口
Application->MessageBoxA(“串口初始化成功”,”串口初始化”,0);
}
catch(…)
//catch(EOleException&e)
{
Application->MessageBoxA(“串口未衔接好或现已翻开”,”毛病提示”);
}

Button1->Caption=”封闭”;
st=1;
}
else
{
Form1->MSComm1->PortOpen=false;
Button1->Caption=”翻开”;
st=0;
}
}
3、串口中止接纳部分

//—————————————————————————
void __fastcall TForm1::MSComm1Comm(TObject *Sender) //串口接纳事情
{
AnsiString str; //声明一个AnsiString类型的变量
OleVariant rec; //声明一个用于接纳数据的OleVariant变量。
int count;
int j;
unsigned char buf[128];

switch(MSComm1->CommEvent)
{
case comEvReceive: //接纳事情
if(type==0) //字符型接纳
{
str=MSComm1->Input;//收到字符串;
Memo1->Text=Memo1->Text+str+” “; //显现收到的字符串
}
else //type=1 为二进制接纳
{
count=MSComm1->InBufferCount; //字节数
rec=MSComm1->Input; //取出接纳缓冲器内容
for(j=0;j
{
buf[j]=rec.GetElement(j); //转换成字节类型
}
Memo1->Text=Memo1->Text+””;
for(j=0;j
{
Memo1->Text=Memo1->Text+IntToHex(buf[j],2)+” “; //显现接纳的字节(以十六进制显现)
}
}
break;
default: break;
} //switch(MSComm1->CommEvent)
}
//—————————————————————————

4、串口发送部分

//—————————————————————————
void __fastcall TForm1::Button2Click(TObject *Sender) //发送
{
int i;
OleVariant send;
int count=5; //发送包的字节数
unsigned char pc_to_stm32[5]={0x80,0x81,0xff,0x05,0x05}; //PC宣布的数据包
send=VarArrayCreate(OPENARRAY(int,(0,count-1)),varByte); //创立一个动态数组
for(i=0;i
{
send.PutElement(pc_to_stm32[i],i); //填充待发送的数据元素
}
MSComm1->Output=send;//从串口发送
}

5、程序停止部分

void __fastcall TForm1::Button3Click(TObject *Sender) //退出应用程序
{
Application->Terminate();
}

三、运转成果

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/256308.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部