A
agangr
Unregistered / Unconfirmed
GUEST, unregistred user!
[red]这是c++ builder的代码:[/red]
/////////////////////////////////////
包含库函数的头文件
#ifndef __PLP__
#define __PLP__
#ifdef __cplusplus
extern "C" {
#endif
__declspec(dllimport) int PlpOpen(unsigned int baudrate, unsigned char *inipath);
__declspec(dllimport) void PlpClose();
__declspec(dllimport) int PlpRead(unsigned char *portname, unsigned char *addr, unsigned char *buf, int *readlen);
//__declspec(dllimport) int PlpRead(unsigned char *portname, unsigned char *addr, unsigned char *buf, int readlen);
__declspec(dllimport) int PlpReadAppoint(unsigned char *portname, unsigned char addr, unsigned char *buf, int n);
__declspec(dllimport) int PlpWrite(unsigned char *portname, unsigned char addr, unsigned char *buf, int n);
#ifdef __cplusplus
}
#endif
#endif
////////////////////////////////////
//////////////////////
[blue]下面为调用的code :[/blue]
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "testmain.h"
#include "plp.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
nump = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CloseClick(TObject *Sender)
{
Timer1->Enabled = false;
PlpClose();
Start->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StartClick(TObject *Sender)
{
int ret;
AnsiString s;
Start->Enabled = false;
ret = PlpOpen(19200);
if(ret!=0)
{
s.sprintf("%d",ret);
ShowMessage("Fail to open com port!/n"+s);
}
Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
int ret1, ret2, readlen;
unsigned char addr, portname[10];
unsigned char rbuf[260]
Timer1->Enabled = false;
Timer1->Interval = 50;
readnext:
ret1 = PlpRead(portname, &addr, rbuf, &readlen);
if( readlen == 0 || ret1 < 0 )
{
Timer1->Enabled = true;
return;
}
do{
ret2 = PlpWrite(portname,addr,rbuf,readlen);
}while( ret2 < readlen);
if( ret1 > 0 ) goto readnext;
Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
//////////////////////////////////////
/////////////////////////////////////
包含库函数的头文件
#ifndef __PLP__
#define __PLP__
#ifdef __cplusplus
extern "C" {
#endif
__declspec(dllimport) int PlpOpen(unsigned int baudrate, unsigned char *inipath);
__declspec(dllimport) void PlpClose();
__declspec(dllimport) int PlpRead(unsigned char *portname, unsigned char *addr, unsigned char *buf, int *readlen);
//__declspec(dllimport) int PlpRead(unsigned char *portname, unsigned char *addr, unsigned char *buf, int readlen);
__declspec(dllimport) int PlpReadAppoint(unsigned char *portname, unsigned char addr, unsigned char *buf, int n);
__declspec(dllimport) int PlpWrite(unsigned char *portname, unsigned char addr, unsigned char *buf, int n);
#ifdef __cplusplus
}
#endif
#endif
////////////////////////////////////
//////////////////////
[blue]下面为调用的code :[/blue]
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "testmain.h"
#include "plp.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
nump = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CloseClick(TObject *Sender)
{
Timer1->Enabled = false;
PlpClose();
Start->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StartClick(TObject *Sender)
{
int ret;
AnsiString s;
Start->Enabled = false;
ret = PlpOpen(19200);
if(ret!=0)
{
s.sprintf("%d",ret);
ShowMessage("Fail to open com port!/n"+s);
}
Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
int ret1, ret2, readlen;
unsigned char addr, portname[10];
unsigned char rbuf[260]
Timer1->Enabled = false;
Timer1->Interval = 50;
readnext:
ret1 = PlpRead(portname, &addr, rbuf, &readlen);
if( readlen == 0 || ret1 < 0 )
{
Timer1->Enabled = true;
return;
}
do{
ret2 = PlpWrite(portname,addr,rbuf,readlen);
}while( ret2 < readlen);
if( ret1 > 0 ) goto readnext;
Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
//////////////////////////////////////