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

📄 scansys.cpp

📁 自己做的一个基于arm7+linux的条码终端系统的源代码
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "ScanSys.h"
#include "DispControl.h"
#include "NetDataRecvThread.h"
#include "CommandID.h"
#include "TypeDefine.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#pragma pack(1)
TForm1 *Form1;
extern ClientIDInfo CliIDInfo[512];
TNetDataRecv *NetDataRecv;
void BeatNetDataSend(void);
bool OpenServerSocket(void);
SOCKET ServerSocket;
static unsigned long BeatSeq = 0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
     
}
//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn_DispControlClick(TObject *Sender)
{
   Form2->Visible = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn_QuitClick(TObject *Sender)
{
    NetDataRecv->Terminate();
    Form1->Close();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormShow(TObject *Sender)
{
   NetDataRecv = new TNetDataRecv(false);

   if (OpenServerSocket())
   {

   }
   else
   {
       ShowMessage(AnsiString("网络打开失败!\n"));
   }   
}
//---------------------------------------------------------------------------

void BeatNetDataSend(void)
{
    int iErrorCode;
    struct sockaddr_in Client_IP_Addr;
    ReqBeat *BeatData = NULL;

    Client_IP_Addr.sin_family = AF_INET;
    Client_IP_Addr.sin_port=htons(CLIENT_RECV_BEAT_PORT); 
    //Client_IP_Addr.sin_addr.s_addr=inet_addr("224.0.0.1"); ///组播
    Client_IP_Addr.sin_addr.s_addr=inet_addr("224.0.0.3");

    BeatData = new ReqBeat;
    
    BeatData->head.reqType = BEAT_CMMD_ID;
    BeatData->head.cid = 0xffff;
    BeatData->head.seq = BeatSeq;
    BeatData->head.hilength = 0;
    BeatData->head.length = sizeof(ReqBeat);
    BeatData->type = BEAT_SERVER_TERMINAL;
    BeatSeq++;

    sendto(ServerSocket, (char *)BeatData, sizeof(ReqBeat), 0,(sockaddr *)&Client_IP_Addr,sizeof(sockaddr_in));

}
void __fastcall TForm1::__Timer(TObject *Sender)
{
   BeatNetDataSend();
}
//---------------------------------------------------------------------------

bool OpenServerSocket(void)
{
    WSADATA wsaData;
    int iErrorCode;
    struct sockaddr_in Server_IP_Addr;

    if (WSAStartup(MAKEWORD(2,1),&wsaData)) //调用Windows Sockets DLL
    { 
         ShowMessage(AnsiString("网络初始化失败!\n"));
         WSACleanup();
         return false;
    }
    else
    {

    }
    
    Server_IP_Addr.sin_family = AF_INET;
    /*所有网络信息都通过此端口发送心跳包*/
    Server_IP_Addr.sin_port=htons(BEAT_SEND_PORT); //发送心跳端口
    Server_IP_Addr.sin_addr.s_addr=htonl(INADDR_ANY); ///本机

    ServerSocket = socket(AF_INET, SOCK_DGRAM, 0);
    
  /*  if (bind(ServerSocket, (struct sockaddr*)&Server_IP_Addr, sizeof(Server_IP_Addr)) < 0)
    {
        ShowMessage(AnsiString("网络初始化失败!\n"));
        WSACleanup();
        closesocket(ServerSocket);
        return false;
    }  */

    return true;
}
void __fastcall TForm1::ClientOnLineTimerTimer(TObject *Sender)
{
   for (int i = 0;i < ClientNum; i++)
   {
      CliIDInfo[i].OnLineTime += 1;

      if (CliIDInfo[i].OnLineTime == 30000)
      {
         ClientList->Delete(CliIDInfo[i].CliID);
         Form2->IDListBox->Items->AddStrings(ClientList);
      }
   }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -