//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
HANDLE hComm; // 将给串行端口使用的Handle声明
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char *ComNo;
DCB dcb;
String Temp;
//取得要打开的通信端口
Temp = "COM"+IntToStr(rdCOM->ItemIndex +1);
// 转换到指针类型的Char
ComNo = Temp.c_str();
hComm = CreateFile(ComNo,GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, 0);
if (hComm == INVALID_HANDLE_VALUE) // 如果COM未打开
{
MessageBox(0, "打开通信端口错误!!","Comm Error",MB_OK);
return;
}
// 将dcb地址传入,以取得通信参数
GetCommState(hComm,&dcb); // 得知目前COM的状态
dcb.BaudRate = CBR_9600; // 设置波特率为9600
dcb.ByteSize = 8; // 字节为8 bit
dcb.Parity = NOPARITY; // Parity 为 None
dcb.StopBits = ONESTOPBIT; // 1个Stop bit
// 通信端口设置
if (!SetCommState(hComm, &dcb)) { // 设置COM的状态
MessageBox (0, "通信端口设置错误!!!","Set Error",MB_OK);
CloseHandle(hComm);
return;
}
Read232->Resume();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::mSendKeyPress(TObject *Sender, char &Key)
{
String Temp;
char *SendData;
int ln;
unsigned long lrc,BS;
if (Key!=13) return;
if (hComm==0) return; // 检查Handle值
Temp = mSend->Text;//取得传送的字符串
SendData = Temp.c_str(); //字符串转换
//取得传送的字符串长度
BS = Temp.Length();
//BS = StrLen(SendData); //也可以使用此种方式取得字符串长度
// 实际的传送动作
WriteFile(hComm,SendData,BS, &lrc,NULL); // 送出数据
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Read232 = new TReadThread(true);
Read232->FreeOnTerminate = true; //Terminated时自行摧毁
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Read232->Terminate();
if (hComm!=INVALID_HANDLE_VALUE) CloseHandle(hComm);
exit(EXIT_SUCCESS);
}
//---------------------------------------------------------------------------
Cb与RSs232串行通信控制
需积分: 0 82 浏览量
2008-07-02
11:49:52
上传
评论
收藏 2.83MB RAR 举报
chpst
- 粉丝: 2
- 资源: 5
最新资源
- 基于pytorch使用LSTM、GRU、BPNN进行时间序列预测源码+模型.zip
- 课程设计基于Tensorflow的手势识别+数据集+运行说明业.zip
- C++毕业设计基于QT的运动场地预约登记管理系统源码+数据库.zip
- 城市降雨对地铁短期OD客流的影响路径与机制研究项目python源码+数据集+PPT演讲.zip
- vcu-gst-app源码包
- 基于QT和C++实现的运动场地预约登记系统源码+数据库+系统截图展示.zip
- 时间序列预测的基准模型RELM-RKELM-RESN-RSVR-matlab源码+数据集.zip
- 电子通信设计资料三闪灯DXP资料
- LMD局域均值分解信号分量可视化(Matlab完整源码和数据)
- 电子通信设计资料频率PWM控制均可调模块DXP资料及其相关资料
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0