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

📄 wmain.cpp

📁 windowssoket编程,用事件驱动的方法读写串口数据
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Wmain.h"
#include "Tserial_event.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFmain *Fmain;

Tserial_event serial_port;



/* ======================================================== */
/* ===============  OnCharArrival     ===================== *//* ======================================================== */void SerialEventManager(uint32 object, uint32 event){    char *buffer;    int   size;    Tserial_event *com;    char   txt[512];    com = (Tserial_event *) object;    if (com!=0)    {        switch(event)        {            case  SERIAL_CONNECTED  :                                        Fmain->Memo1->Lines->Append(AnsiString("Connected !"));                                        break;            case  SERIAL_DISCONNECTED  :                                        Fmain->Memo1->Lines->Append(AnsiString("Disonnected !"));                                        break;            case  SERIAL_DATA_SENT  :                                        //OnDataSent();                                        Fmain->Memo1->Lines->Append(AnsiString("Data sent !"));                                        break;            /*            case  SERIAL_RING       :                                        printf("DRING ! \n");                                        break;            case  SERIAL_CD_ON      :                                        printf("Carrier Detected ! \n");                                        break;            case  SERIAL_CD_OFF     :                                        printf("No more carrier ! \n");                                        break;            */            case  SERIAL_DATA_ARRIVAL  :                                        size   = com->getDataInSize();                                        buffer = com->getDataInBuffer();                                        if (size>511)                                            size=511;                                        memcpy(txt,buffer, size);                                        txt[size] = 0;                                        Fmain->Memo1->Lines->Append(AnsiString(txt));                                        com->dataHasBeenRead();                                        break;        }    }}




//---------------------------------------------------------------------------
__fastcall TFmain::TFmain(TComponent* Owner)
    : TForm(Owner)
{
    serial_port.setManager(SerialEventManager);
}
//---------------------------------------------------------------------------
void __fastcall TFmain::Button1Click(TObject *Sender)
{
    // connect
    serial_port.connect("COM2",38400,SERIAL_PARITY_NONE,8,false);
}
//---------------------------------------------------------------------------
void __fastcall TFmain::Button2Click(TObject *Sender)
{
    // send
    serial_port.sendData(Edit1->Text.c_str(), Edit1->Text.Length());
}
//---------------------------------------------------------------------------

void __fastcall TFmain::Button3Click(TObject *Sender)
{
    serial_port.disconnect();
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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