📄 serialset.~cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <Winsock2.h>
#include "TypeDefine.h"
#include "CommandID.h"
#include "SerialSet.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;
extern ClientIDInfo CliIDInfo[512];
#pragma pack(1)
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm3::BitBtn2Click(TObject *Sender)
{
Form3->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm3::BitBtn1Click(TObject *Sender)
{
SOCKET ServerSocket;
WSADATA wsaData;
int iErrorCode;
struct sockaddr_in Server_IP_Addr,Client_IP_Addr;
ReqSetComAttr ComData;
if (WSAStartup(MAKEWORD(2,1),&wsaData)) //调用Windows Sockets DLL
{
ShowMessage(AnsiString("设置串口网络初始化失败!\n"));
WSACleanup();
}
else
{
}
ComData.head.reqType = SET_COM_ATTR_CMMD_ID;
if (RadioButton1->Checked)
{
ComData.attr.num = 1;
ComData.attr.speed = SpeedComBox->Text.ToDouble();
ComData.attr.bits = BitComboBox->Text.ToInt();
ComData.attr.parity = VerifyComBox->ItemIndex;
ComData.attr.fctrl = DataContComBox->ItemIndex;
ComData.attr.stop = StopBitComBox->ItemIndex;
}
else if (RadioButton2->Checked)
{
ComData.attr.num = 2;
ComData.attr.speed = ComboBox1->Text.ToDouble();
ComData.attr.bits = ComboBox2->Text.ToInt();
ComData.attr.parity = ComboBox3->ItemIndex;
ComData.attr.fctrl = ComboBox5->ItemIndex;
ComData.attr.stop = ComboBox4->ItemIndex;
}
else
{
ShowMessage(AnsiString("请选择串口\n"));
return;
}
ComData.head.cid = CliIDInfo[ClientSelectNum].CliID;;
ComData.head.hilength= 0;
ComData.head.length = sizeof(ReqSetComAttr);
Client_IP_Addr.sin_family = AF_INET;
Client_IP_Addr.sin_port=htons(CLIENT_RECV_SERIAL_PORT);
Client_IP_Addr.sin_addr.s_addr = CliIDInfo[ClientSelectNum].ClientIP;
Server_IP_Addr.sin_family = AF_INET;
Server_IP_Addr.sin_port=htons(CLIENT_COM_SET_DATA); //监听端口
//Server_IP_Addr.sin_addr.s_addr=inet_addr("192.168.1.6"); ///本机
Server_IP_Addr.sin_addr.s_addr = htonl(INADDR_ANY);
ServerSocket = socket(AF_INET, SOCK_DGRAM, 0);
sendto(ServerSocket, (char *)&ComData, sizeof(ReqSetComAttr), 0,(struct sockaddr *)&Client_IP_Addr,sizeof(struct sockaddr));
closesocket(ServerSocket);
}
//---------------------------------------------------------------------------
struct ComAttrRespone {
__u8 type;
ComAttribute attr;
} comRespone;
void __fastcall TForm3::BitBtn3Click(TObject *Sender)
{
SOCKET ServerSocket;
WSADATA wsaData;
int iErrorCode;
struct sockaddr_in Server_IP_Addr,Client_IP_Addr;
ReqReadComData GetComData;
int recv_data_len = sizeof(Client_IP_Addr);
if (WSAStartup(MAKEWORD(2,1),&wsaData)) //调用Windows Sockets DLL
{
ShowMessage(AnsiString("设置串口网络初始化失败!\n"));
WSACleanup();
}
else
{
}
GetComData.head.reqType = GET_COM_ATTR_CMMD_ID;
if (RadioButton1->Checked)
{
GetComData.comnum = 1;
}
else if (RadioButton2->Checked)
{
GetComData.comnum = 2;
}
else
{
ShowMessage(AnsiString("请选择串口\n"));
return;
}
GetComData.head.cid = CliIDInfo[ClientSelectNum].CliID;;
GetComData.head.hilength= 0;
GetComData.head.length = sizeof(ReqReadComData);
Client_IP_Addr.sin_family = AF_INET;
Client_IP_Addr.sin_port=htons(CLIENT_RECV_SERIAL_PORT);
Client_IP_Addr.sin_addr.s_addr = CliIDInfo[ClientSelectNum].ClientIP;
Server_IP_Addr.sin_family = AF_INET;
Server_IP_Addr.sin_port=htons(CLIENT_COM_SET_DATA); //监听端口
//Server_IP_Addr.sin_addr.s_addr=inet_addr("192.168.1.6"); ///本机
Server_IP_Addr.sin_addr.s_addr = htonl(INADDR_ANY);
ServerSocket = socket(AF_INET, SOCK_DGRAM, 0);
sendto(ServerSocket, (char *)&GetComData, sizeof(ReqReadComData), 0,(struct sockaddr *)&Client_IP_Addr,sizeof(struct sockaddr));
recvfrom(ServerSocket,(char *)&comRespone,sizeof(struct ComAttrRespone),0,(struct sockaddr*)&Client_IP_Addr,&recv_data_len);
if(comRespone.type != GET_COM_ATTR_CMMD_ID)
{
}
else
{
ComAttribute attr;
//memcpy(&comRespone.attr,&attr,sizeof(ComAttribute));
attr.speed = comRespone.attr.speed;
attr.bits= comRespone.attr.bits;
attr.parity = comRespone.attr.parity;
attr.fctrl = comRespone.attr.fctrl;
attr.stop = comRespone.attr.stop;
attr.num = comRespone.attr.num;
if (Form3->RadioButton1->Checked)
{
Form3->SpeedComBox->Text = attr.speed;
Form3->BitComboBox->Text = attr.bits;
switch (attr.parity)
{
case 0:
Form3->VerifyComBox->Text = AnsiString("偶效验");
break;
case 1:
Form3->VerifyComBox->Text = AnsiString("奇观验");
break;
case 2:
Form3->VerifyComBox->Text = AnsiString("无");
break;
case 3:
Form3->VerifyComBox->Text = AnsiString("标记");
break;
case 4:
Form3->VerifyComBox->Text = AnsiString("空格");
break;
default:
Form3->VerifyComBox->Text = AnsiString("无");
break;
}
switch (attr.stop)
{
case 0:
Form3->StopBitComBox->Text = AnsiString("1");
break;
case 1:
Form3->StopBitComBox->Text = AnsiString("无");
break;
default:
Form3->StopBitComBox->Text = AnsiString("无");
break;
}
switch (attr.fctrl)
{
case 0:
Form3->DataContComBox->Text = AnsiString("Xon/Xoff");
break;
case 1:
Form3->DataContComBox->Text = AnsiString("硬件");
break;
case 2:
Form3->DataContComBox->Text = AnsiString("无");
break;
default:
Form3->DataContComBox->Text = AnsiString("硬件");
break;
}
}
else if (Form3->RadioButton2->Checked)
{
Form3->ComboBox1->Text = attr.speed;
Form3->ComboBox2->Text = attr.bits;
switch (attr.parity)
{
case 0:
Form3->ComboBox3->Text = AnsiString("偶效验");
break;
case 1:
Form3->ComboBox3->Text = AnsiString("奇观验");
break;
case 2:
Form3->ComboBox3->Text = AnsiString("无");
break;
case 3:
Form3->ComboBox3->Text = AnsiString("标记");
break;
case 4:
Form3->ComboBox3->Text = AnsiString("空格");
break;
default:
Form3->ComboBox3->Text = AnsiString("无");
break;
}
switch (attr.stop)
{
case 0:
Form3->ComboBox4->Text = AnsiString("1");
break;
case 1:
Form3->ComboBox4->Text = AnsiString("无");
break;
default:
Form3->ComboBox4->Text = AnsiString("无");
break;
}
switch (attr.fctrl)
{
case 0:
Form3->ComboBox5->Text = AnsiString("Xon/Xoff");
break;
case 1:
Form3->ComboBox5->Text = AnsiString("硬件");
break;
case 2:
Form3->ComboBox5->Text = AnsiString("无");
break;
default:
Form3->ComboBox5->Text = AnsiString("硬件");
break;
}
}
else
{
}
}
closesocket(ServerSocket);
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -