📄 main.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Main.h"
#include <stdio.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmMain *frmMain;
//---------------------------------------------------------------------------
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
: TForm(Owner)
{
}
void __fastcall TfrmMain::GprsReceive(int xx)
{
TListItem *pItem;
TTreeNode *Node1;
char mess[256];
FARPROC lpFarProc;
data_record mydata;
AnsiString str;
int(_stdcall *do_read_proc)(data_record *, char *, bool );
if( GprsHandle != NULL )
{
lpFarProc = GetProcAddress( GprsHandle,"do_read_proc" ); //得到指向函数的指针
do_read_proc = ( int(_stdcall*)(data_record *, char *, bool) ) lpFarProc; //指针类型转换
if( (*do_read_proc)( &mydata, mess, 0 ) >= 0)
{
switch (mydata.m_data_type)
{
case 0x01:
Edit1->Text=AnsiString(mydata.m_userid);
Memo1->Lines->Add("注册: "+AnsiString(mydata.m_userid));
TreeView1->Items->AddChild(Root,AnsiString(mydata.m_userid));
pollusertable();
break;
case 0x02:
Memo1->Lines->Add("登出: "+AnsiString(mydata.m_userid));
for (int i=1;i<=TreeView1->Items->Count -1;i++)
{
Node1=TreeView1->Items->Item[i];
str= AnsiString(mydata.m_userid);
if (StrComp(Node1->Text.c_str() ,str.c_str())==0)
TreeView1->Items->Delete(Node1);
}
pollusertable();
break;
case 0x09:
Memo1->Lines->Add("接受:"+AnsiString(mydata.m_data_buf));
break;
}
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::pollusertable()
{
int i ;
TListItem *pItem;
String dstr;
String closeonemess;
int temp;
int tucount;
user_info tuserinfo;
String tmess;
TDate b;
long t_update ;
long m1;
long m2;
// b = #1/1/1970#;
FARPROC lpFarProc;
lpFarProc = GetProcAddress(GprsHandle,"get_max_user_amount" ); //得到指向函数的指针
get_max_user_amount = (int(_stdcall*)())lpFarProc; //指针类型转换
tucount = get_max_user_amount();
if (tucount < 1) return;
ListView1->Items->Clear();
m1 = 256;
m2 = m1 * 256;
for (i = 0; i<=tucount ;i++)
{
lpFarProc = GetProcAddress(GprsHandle,"get_user_at" ); //得到指向函数的指针
get_user_at=(int(_stdcall*)(uint ,user_info *))lpFarProc; //指针类型转换
temp = get_user_at(i, &tuserinfo);
if (tuserinfo.m_status == 1 )
{
pItem=ListView1->Items->Add() ;
pItem->Caption =AnsiString(tuserinfo.m_userid);
pItem->SubItems->Add(AnsiString(tuserinfo.m_logon_date));
char str[50];
sprintf(str,"%d.%d.%d.%d",(unsigned char)(tuserinfo.m_local_addr >> 24),
(unsigned char)(tuserinfo.m_local_addr >> 16),
(unsigned char)(tuserinfo.m_local_addr >> 8),
(unsigned char)tuserinfo.m_local_addr );
pItem->SubItems->Add(str);
pItem->SubItems->Add(AnsiString(tuserinfo.m_local_port));
sprintf(str,"%d.%d.%d.%d",(unsigned char)(tuserinfo.m_sin_addr >> 24),
(unsigned char)(tuserinfo.m_sin_addr >> 16),
(unsigned char)(tuserinfo.m_sin_addr >> 8),
(unsigned char)tuserinfo.m_sin_addr );
pItem->SubItems->Add(str);
pItem->SubItems->Add(AnsiString(tuserinfo.m_sin_port));
}
}
}
void __fastcall TfrmMain::btnStartServerClick(TObject *Sender)
{
char mess[128];
FARPROC lpFarProc;
GprsHandle = LoadLibrary("wcomm_dll.dll");
if( GprsHandle != NULL )
{
//lpFarProc = GetProcAddress( GprsHandle,"start_gprs_server"); //得到指向函数的指针
lpFarProc = GetProcAddress( GprsHandle,"start_net_service"); //得到指向函数的指针
start_net_service = (int(_stdcall*)( HWND, unsigned int, int, char * ))lpFarProc; //指针类型转换
if((*start_net_service)(this->Handle, MYMESS, 5002, mess ) >= 0 )
Memo1->Lines->Add(AnsiString(mess) );
btnReadProcClick(btnReadProc);
TreeView1->Items->Item[0]->ImageIndex =0;
Root = TreeView1->Items->Item[0];
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnStopServerClick(TObject *Sender)
{
char mess[128];
FARPROC lpFarProc;
if( GprsHandle != NULL )
{
//lpFarProc = GetProcAddress( GprsHandle,"stop_gprs_server" ); //得到指向函数的指针
lpFarProc = GetProcAddress( GprsHandle,"stop_net_service" ); //得到指向函数的指针
stop_net_service = (int(_stdcall*)( char * ) ) lpFarProc; //指针类型转换
if( stop_net_service( mess ) >= 0 )
Memo1->Lines->Add(AnsiString(mess));
FreeLibrary(GprsHandle);
GprsHandle=NULL;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnReadProcClick(TObject *Sender)
{
char mess[256];
FARPROC lpFarProc;
data_record mydata;
if( GprsHandle != NULL )
{
lpFarProc = GetProcAddress( GprsHandle,"do_read_proc" ); //得到指向函数的指针
do_read_proc = ( int(_stdcall*)(data_record *, char *, bool) ) lpFarProc; //指针类型转换
if( do_read_proc( &mydata, mess, 0 ) >= 0)
Memo1->Lines->Add(AnsiString(mess));
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnWriteClick(TObject *Sender)
{
AnsiString str;
AnsiString userid;
char mess[256];
FARPROC lpFarProc;
if( GprsHandle != NULL )
{
lpFarProc = GetProcAddress( GprsHandle,"do_send_user_data" ); //得到指向函数的指针
do_send_user_data = ( int(_stdcall*)(uint8* ,uint8*,uint ,char *) ) lpFarProc; //指针类型转换
userid=Edit1->Text;
str=Edit2->Text;
do_send_user_data(userid.c_str(),str.c_str() ,str.Length(),NULL);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::SpeedButton1Click(TObject *Sender)
{
frmMain->Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::TreeView1Change(TObject *Sender, TTreeNode *Node)
{
FSelectedIndex=Node->Index;
FSelectedText=Node->Text ;
if (strcmp(AnsiString(FSelectedText).c_str() ,"DTU列表")!=0)
Edit1->Text = FSelectedText;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -