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

📄 uitransrecord.c

📁 嵌入工linux开发的源码
💻 C
字号:
#include <pr2k.h>
#include <typedefine.h>
#include <fatsys.h>
#include <database.h>
#include <db_create.h>

#ifdef __WIN32__
#include <uiuart.h>   
#include <uiTransfer.h>                             
#include <uiTransRecord.h>
#else            
#include <uart.h>   
#include <Transfer.h>                             
#include <TransRecord.h>
#endif            
                                          
// only for debug , complier and liner
int  IrDA_Init(void)
{
	return 1;
}                                 


DLL_EXP(int)  IrSendRecord(char *buffer, int len)
{                         
	int ret, i, j, blockLen, bgLen;    
	int packetNo=0;
	unsigned char packetBuf[1024];
	char *pRecord; 
	TDeviceState DS;
                   
	DS.BaudRate = 9600;
	DS.Parity = NOPARITY;
	//DS.StopBits = ONESTOPBIT;
	DS.StopBits = TWOSTOPBITS;

	IrDA_Open("COM2", &DS);
                       
#if 1   
	bgLen = swapInt(len);
	memcpy(packetBuf, &bgLen, 4);
	memcpy(&packetBuf[4], buffer, len);
	com_Send(COM2, packetBuf, 1024);
     
#endif
/*                                      
	while(1)
	{        
		for(i=0; i<256; i++)
		{
			j = 0x1000;
			//while(j--);
		
    		com_SendByte(COM2, i);       
		}

	}
*/ 
                       
#if 0
	ret = MasterHandShake(COM2, 60);
	if(ret==STATUS_ERR)
	{                 
    	com_Close(COM2);
    	return IR_ERR_HANDSHAKE;
	}
                                                      
	ret = SendPackData(COM2, packetNo++, (unsigned char *)&len, 4);
	if(ret!=STATUS_OK)
	{
   		com_Close(COM2);
       	return IR_ERR_TRANSFER;
	}

	pRecord = buffer;	
                        
	while(len)
	{
		blockLen = (len>PACKET_LEN)?PACKET_LEN:len;
		len -= blockLen;
                          
		memcpy(packetBuf, pRecord, blockLen);      
		pRecord += blockLen;
		ret = SendPackData(COM2, packetNo++, packetBuf, blockLen);
		if(ret!=STATUS_OK)
		{
			//db_close(hDB);
    		com_Close(COM2);
        	return IR_ERR_TRANSFER;
		}
			
	}
     
#endif
	//db_close(hDB);
   	com_Close(COM2);

	return STATUS_OK;
}                    


DLL_EXP(int)  IrReceiveRecord(char *buffer, int *len)
{
	int ret, i, receiveLen, recordLen, curLen;         
	int packetNo=0; 
	int t0, t1;
	unsigned char packetBuf[256];
	char *pRecord;   
	unsigned char byData;   
	TDeviceState DS;    

	unsigned char byTemp;
                   
	DS.BaudRate = 9600;
	//DS.BaudRate = 4800;
	DS.Parity = NOPARITY; 
	DS.DataBits = 8;
	//DS.StopBits = ONESTOPBIT;
	DS.StopBits = TWOSTOPBITS;

	IrDA_Open("COM2", &DS);
                     
//	while(1)
//		com_SendByte(COM2, HS_SLAVE_ACK);

      
#if 1                   
	t0 = _GetTickCount();
	com_ReceiveByte(COM2, &byData);    
#ifndef __WIN32__
	while(1)               
	{
		ret = PeepUartBuffer(COM2);
		if(ret==STATUS_OK)
			break;       

		t1 = _GetTickCount();
		if((t1-t0)>20)
		{               
			com_Close(COM2);
        	return STATUS_ERR;
		}
	}
#endif
	ret = com_Receive(COM2, packetBuf, 1024);

	receiveLen = *(int *)(&packetBuf);

	if(receiveLen>1024)
		receiveLen = 1024;	

	*len = receiveLen;                      

	memcpy(buffer, &packetBuf[4], receiveLen);
#endif    
     
#if 0
	ret = SlaveHandShake(COM2, 60);
	if(ret!=STATUS_OK)
	{                 
    	com_Close(COM2);
    	return IR_ERR_HANDSHAKE;
	}
                               
                
    ret = ReceivePackData(COM2, packetNo++, (unsigned char *)&recordLen);
	if(ret!=4)
	{
   		com_Close(COM2);
       	return IR_ERR_RECEIVE;
	}

	pRecord = buffer;	
                                             
	curLen = 0;
	while(curLen!=recordLen)
	{   
                               
		receiveLen = ReceivePackData(COM2, packetNo++, packetBuf);
		if(!receiveLen)
		{
    		com_Close(COM2);
        	return IR_ERR_RECEIVE;
		}

		memcpy(pRecord, packetBuf, receiveLen);      
		pRecord += receiveLen;
		curLen += receiveLen;

	}
#endif     

   	com_Close(COM2);

	return STATUS_OK;
}                    

⌨️ 快捷键说明

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