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

📄 uartport.cpp

📁 采用cb平台开发
💻 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 + -