📄 signalcontrol.~cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <Winsock2.h>
#include "SignalControl.h"
#include "TypeDefine.h"
#include "CommandID.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm5 *Form5;
#pragma pack(1)
extern ClientIDInfo CliIDInfo[512];
//---------------------------------------------------------------------------
__fastcall TForm5::TForm5(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm5::BitBtn1Click(TObject *Sender)
{
SOCKET ServerSocket;
WSADATA wsaData;
int iErrorCode;
struct sockaddr_in Server_IP_Addr,Client_IP_Addr;
ReqSetIO OutSigSet;
if (WSAStartup(MAKEWORD(2,1),&wsaData)) //调用Windows Sockets DLL
{
ShowMessage(AnsiString("信号网络初始化失败!\n"));
WSACleanup();
}
else
{
}
OutSigSet.head.reqType = SET_IO_CMMD_ID;
OutSigSet.head.cid = CliIDInfo[ClientSelectNum].CliID;
OutSigSet.head.length = sizeof(ReqSetIO);
OutSigSet.head.hilength = 0;
if (OutputSig1->Checked)
{
OutSigSet.info.port = 1;
OutSigSet.info.onoff = 1;
}
else
{
OutSigSet.info.port = 2;
OutSigSet.info.onoff = 1;
}
Client_IP_Addr.sin_family = AF_INET;
Client_IP_Addr.sin_port=htons(CLIENT_RECV_SIGNAL_PORT); //监听端口
Client_IP_Addr.sin_addr.s_addr = CliIDInfo[ClientSelectNum].ClientIP;
//ShowMessage(CliIDInfo[ClientSelectNum].ClientIP);
Server_IP_Addr.sin_family = AF_INET;
Server_IP_Addr.sin_port=htons(CLIENT_SIGNAL_SET_PORT); //监听端口
// 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);
//bind(ServerSocket, (struct sockaddr*)&Server_IP_Addr, sizeof(Server_IP_Addr));
sendto(ServerSocket, (char *)&OutSigSet, sizeof(ReqSetIO), 0,(struct sockaddr *)&Client_IP_Addr,sizeof(struct sockaddr));
closesocket(ServerSocket);
}
//---------------------------------------------------------------------------
struct SignalGetRespone {
__u8 type;
SignalInfo Siganldata;
} SignalRespone;
void __fastcall TForm5::BitBtn3Click(TObject *Sender)
{
SOCKET ServerSocket;
WSADATA wsaData;
int iErrorCode;
struct sockaddr_in Server_IP_Addr,Client_IP_Addr;
ReqGetIO OutSigGet;
int recv_data_len = sizeof(Client_IP_Addr);
if (WSAStartup(MAKEWORD(2,1),&wsaData)) //调用Windows Sockets DLL
{
ShowMessage(AnsiString("信号网络初始化失败!\n"));
WSACleanup();
}
else
{
}
if (InputSig1->Checked)
{
OutSigGet.port = 1;
}
else
{
OutSigGet.port = 2;
}
OutSigGet.head.reqType = GET_IO_CMMD_ID;
OutSigGet.head.hilength = 0;
OutSigGet.head.length = sizeof(ReqGetIO);
OutSigGet.head.cid = CliIDInfo[ClientSelectNum].CliID;
Client_IP_Addr.sin_family = AF_INET;
Client_IP_Addr.sin_port=htons(CLIENT_RECV_SIGNAL_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_SIGNAL_SET_PORT); //监听端口
// 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 *)&OutSigGet, sizeof(ReqGetIO), 0,(struct sockaddr *)&Client_IP_Addr,sizeof(struct sockaddr));
recvfrom(ServerSocket,(char *)&SignalRespone,sizeof(struct SignalGetRespone),0,(struct sockaddr*)&Client_IP_Addr,&recv_data_len);
if (SignalRespone.Siganldata.port == 1)
{
if (SignalRespone.Siganldata.onoff = 1)
{
InputSig1->Checked = true;
}
else
{
InputSig1->Checked = false;
}
}
else if (SignalRespone.Siganldata.port == 2)
{
if (SignalRespone.Siganldata.onoff = 1)
{
InputSig2->Checked = true;
}
else
{
InputSig2->Checked = false;
}
}
closesocket(ServerSocket);
}
//---------------------------------------------------------------------------
void __fastcall TForm5::BitBtn2Click(TObject *Sender)
{
Form5->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm5::OutputSig1Click(TObject *Sender)
{
OutputSig2->Checked = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm5::OutputSig2Click(TObject *Sender)
{
OutputSig1->Checked = false;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -