📄 uartport.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "UartPort.h"
#include "fmModem.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#define LEN_MODEM_DATA 4096
//extern volatile UINT StTick;
#define StTick GetTickCount()
extern TfrmModem *frmModem;
unsigned char ModemBuff[LEN_MODEM_DATA];
unsigned short iModemRead;
unsigned short iModemWrite;
//---------------------------------------------------------------------------
unsigned char set_char(char idxport,unsigned char data)
{
if (frmModem->SPC->WriteCommData(&data,1)==false)
return 0;
return 1;
}
unsigned char get_char(char idxport,unsigned char *data)
{
if(iModemWrite != iModemRead)
{
*data =ModemBuff[iModemRead];
iModemRead++;
if(iModemRead >= LEN_MODEM_DATA)
iModemRead =0;
return 1;
}
return 0;
}
void PortOpen(unsigned char com,unsigned int baudrate)
{
frmModem->SPC->CommName="com"+AnsiString(com);
frmModem->SPC->BaudRate=baudrate;
frmModem->SPC->StartComm();
}
void PortReceive(unsigned char *Buffer,int BufferLength)
{
if (iModemWrite+BufferLength>LEN_MODEM_DATA)
{
int iwpos=LEN_MODEM_DATA-iModemWrite;
memcpy(ModemBuff+iModemWrite,Buffer,iwpos);
memcpy(ModemBuff,Buffer+iwpos,BufferLength-iwpos);
iModemWrite=BufferLength-iwpos;
}
else
{
memcpy(ModemBuff+iModemWrite,Buffer,BufferLength);
iModemWrite+=BufferLength;
}
}
#include <stdio.h>
void DebugPrint(char *frm, ...)
{
va_list marker;
unsigned char buff[4096];
memset(buff,0,sizeof(buff));
va_start( marker, frm);
vsprintf(buff,frm,marker);
va_end( marker );
AnsiString pp;
char *p=buff;
while (*p)
{
pp+=*p++;
};
frmModem->mmMsg->Lines->Add(pp);
}
void DebugData(unsigned char cSlot,unsigned long length,unsigned int x,unsigned char *buff)
{
unsigned long i=0l,j=0l;
unsigned long pos=0l;
unsigned char senddata;
unsigned char tempchar[4];
unsigned char hex[]={"0123456789ABCDEF"};
AnsiString pp;
char *p;
if (x==0)
return;
for(i=0;i<=length/x;i++)
{
pp="";
for(j=0;j<x;j++)
{
pos=i*x+j;
if (pos==length)
break;
senddata=buff[pos];
tempchar[0]=hex[senddata>>4];
tempchar[1]=hex[senddata&0x0f];
tempchar[2]=0x20;
tempchar[3]=0;
p=tempchar;
while (*p)
{
pp+=*p++;
};
}
frmModem->mmMsg->Lines->Add(pp);
}
}
void DebugString(unsigned char cSlot,char *string)
{
DebugPrint(string);
}
void DelayMs(int iMs)
{
unsigned short i;
UINT lClkTmp =0l;
for(i=0; i<(iMs/1000); i++)
{
lClkTmp =StTick;
while(StTick < (lClkTmp+1000));
}
if((iMs%1000) != 0)
{
lClkTmp =StTick;
while(StTick < (lClkTmp+(iMs%1000)));
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -