9.1. RS232通信的例子
RS232通信单元
//------------------------------------------------ ---------------------------
#包括
的#pragma hdrstop
#包括“RS232Unit.h”
//------------------------------------------------ ---------------------------
的#pragma包(smart_init)
的#pragma链接“通信”
资源的#pragma“*. DFM的”
TForm1 * Form1的;
//------------------------------------------------ ---------------------------
__fastcall TForm1::TForm1(TComponent *拥有者)
:TForm(业主)
{
}
//------------------------------------------------ ---------------------------
无效__fastcall TForm1::FormCreate(TObject *发件人)
{
/ /设置默认的通信
ComboBox1 -> ItemIndex = br9600; / /比特每秒
/ * 0:br110
1:BR300
2:br600
3:br1200
4:br2400
5:br4800
6:br9600
7:br14400
8:br19200
9:br38400
10:br56000
11:br57600
12:br115200 * /
ComboBox2 -> ItemIndex = DA8 / /数据位
/ * 0:da4
1:Qa5
2:DA6
3:DA7
4:DA8 * /
ComboBox3 -> ItemIndex = Panone / /校验
/ * 0:Panone
1:paOdd(麻痹)
2:paEven(单数)
3:paMark(品牌)
4:PASPAC(空间)* /
ComboBox4 -> ItemIndex = SB10; / /停止位
/ * 0:SB10
1:保安局15
2:SB20 * /
ComboBox5 -> ItemIndex = fcNone / /流量控制
/ * 0:fcNone
1:fcCTS
2:fcDTR
3:fcSottware
4:fcDefault * /
ComboBox6 -> ItemIndex = 0,/ /端口
}
//------------------------------------------------ ---------------------------
/ /绿色复关开clLime clGreen
/ /蓝色复关开0x00FF8000 0x00804000
无效__fastcall TForm1::Comm1RxChar(TObject *发件人,DWORD的计数)
{
诠释的状态;
诠释NumRec;
逸弦;
BufRec的char [101];
Shape3 ->刷>“颜色= clLime;
NumRec = comm1 -> InQueCount(),/ /接收的字符数
状态= comm1 ->阅读(BufRec,计数)/ /读取缓冲区
如果(国家==- 1)
{
ShowMessage(“错误在接受”);
}
其他
{
为(int n = 0时,氮<NumRec,氮+ +)
{
如果(!CheckBox1 ->选中)
{
逸=逸+ IntToStr(BufRec [ŋ ])+',';
}
其他
{
逸逸+ BufRec = [n]的;
}
}
Edit2 ->“文本= Edit2 ->”文本+逸;
}
Shape2 ->刷>“颜色= 0x00FF8000;
定时器1 ->启用=真;
}
//------------------------------------------------ ---------------------------
无效TForm1::EstadoLineas()
{
如果(comm1 ->中旅)
{
Shape8 ->刷>“颜色= 0x00FF8000;
}
其他
{
Shape8 ->刷>“颜色= 0x00804000;
}
如果(comm1 -> DSR)的
{
Shape6 ->刷>“颜色= 0x00FF8000;
}
其他
{
Shape6 ->刷>“颜色= 0x00804000;
}
如果(comm1 ->环)
{
Shape9 ->刷>“颜色= 0x00FF8000;
}
其他
{
Shape9 ->刷>“颜色= 0x00804000;
}
如果(comm1 ->资料摘要)
{
Shape1 ->刷>“颜色= 0x00FF8000;
}
其他
{
Shape1 ->刷>“颜色= 0x00804000;
}
}
//------------------------------------------------ ---------------------------
无效__fastcall TForm1::Comm1Cts(TObject *发件人)
{
/ /检查的CTS和DSR线的状态
EstadoLineas();
}
//------------------------------------------------ ---------------------------
无效__fastcall TForm1::Comm1Dsr(TObject *发件人)
{
/ /检查的CTS和DSR线的状态
EstadoLineas();
}
//------------------------------------------------ ---------------------------
无效__fastcall TForm1::BitBtn1Click(TObject *发件人)
{
如果(!comm1 ->启用())
{
/ /设置参数
Comm1 ->的DeviceName = ComboBox6 ->项目->“字符串[ComboBox6 -> ItemIndex] / /端口
Comm1 ->波特率= ComboBox1 -> ItemIndex,/ /位每秒
Comm1 ->数据位= ComboBox2 -> ItemIndex / /数据位
Comm1 ->平价= ComboBox3 -> ItemIndex / /校验
Comm1 -> StopBits = ComboBox4 -> ItemIndex / /停止位
Comm1 -> FlowControl = ComboBox5 -> ItemIndex / /流量控制
/ /打开通讯端口
Comm1 ->“打开();
Comm1 -> SetRTSState(真实)/ /启用RTS
Shape7 ->刷>“颜色= clLime;
Comm1 -> SetDTRState(真实)/ /允许DTR线
Shape4 ->刷>“颜色= clLime;
/ /切换打开端口的状态指示灯
Label7 ->标题=“打开端口”;
Shape10 ->刷>“颜色= clLime;
/ /检查的CTS和DSR线的状态
EstadoLineas();
}
}
//------------------------------------------------ ---------------------------
无效__fastcall TForm1::BitBtn2Click(TObject *发件人)
{
如果(comm1 ->启用())
{
/ /关闭通讯端口
Comm1 ->“关闭();
/ /切换打开端口的状态指示灯
Label7 ->标题=“口关闭”;
Shape10 ->刷>“颜色= clRed;
Shape7 ->刷>“颜色= clGreen;
Shape4 ->刷>“颜色= clGreen;
/ /检查的CTS和DSR线的状态
EstadoLineas();
}
}
//------------------------------------------------ ---------------------------
无效__fastcall TForm1::BitBtn4Click(TObject *发件人)
{
Edit2 ->“文本=”“;
}
//------------------------------------------------ ---------------------------
无效__fastcall TForm1::BitBtn3Click(TObject *发件人)
{
Edit1 ->“文本=”“;
}
//------------------------------------------------ ---------------------------
无效__fastcall TForm1::Comm1Ring(TObject *发件人)
{
/ /检查的CTS和DSR线的状态
EstadoLineas();
}
//------------------------------------------------ ---------------------------
无效__fastcall TForm1::Comm1Rlsd(TObject *发件人)
{
/ /检查的CTS和DSR线的状态
EstadoLineas();
}
//------------------------------------------------ ---------------------------
无效__fastcall TForm1::Edit1KeyPress(TObject *发件人,焦炭及密钥)
{
字符的DAT [2];
逸[0] =键;
Comm1 ->写体(DAT,1);
Shape3 ->刷>“颜色= clLime;
定时器2 ->启用=真;
}
//------------------------------------------------ ---------------------------
无效__fastcall TForm1::Timer1Timer(TObject *发件人)
{
定时器1 ->启用= 0;
Shape2 ->刷>“颜色= 0x00804000;
}
//------------------------------------------------ ---------------------------
无效__fastcall TForm1::Timer2Timer(TObject *发件人)
{
定时器2 ->启用= 0;
Shape3 ->刷>“颜色= clGreen;
}
//------------------------------------------------ ---------------------------

例如测试程序的RS - 232通信