⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serialset.~cpp

📁 自己做的一个基于arm7+linux的条码终端系统的源代码
💻 ~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 + -