亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? com_driver.c

?? lab windows uart driver
?? C
?? 第 1 頁 / 共 5 頁
字號:
/****************************************************************
*  COPYRIGHT DaTang Mobile Communications Equipment CO.,LTD		*
****************************************************************/
/****************************************************************
* FileName:	Com_driver.c
* version: 1.00
* Purpose: 
* Authors: XiaJing 2006-3-15 16:11:13
* Notes:   Can be used for A2000 project(Dual Mode:TD-SCDMA & GSM)
Be released as ComDvr_DM.dll
****************************************************************/
#include <visa.h>
#include "share.h"
#include <ansi_c.h>
#include <formatio.h>
#include <rs232.h>
#include <cvirte.h>		
#include <userint.h>
#include <utility.h>
#include "main.h"
//#include "commandmsg.h"
#include "basic_type.h"
#include "amthead.h"
#include "CRC32CheckModc.h"
#include "Comm.h"



//#define TESTCODE_DEBUG		1
ShareMem *sharedata=NULL;
int Rs232;
int msgpanel;

unsigned char cmdbuf[AMT_COMMAND_BUF_LENGTH];
EnumErrorCode ComRw(void);
EnumErrorCode Com_Rd(double Wt);
void Com_init(void);

/*********************************************************
//函數(shù)名:ShareM
//功能:initialize share memory
//參數(shù): ShareMem *structure,int panel
//返回值:無
//注釋:
//遺留的問題:無
*********************************************************/
void DLLEXPORT ShareM(ShareMem *structure)
{
	sharedata=structure;
}

/**********************************************************************
函數(shù)名:	ComInfo
功能: 	Interface,通過串口與UE通信,控制UE
//
參數(shù): 	int ComType:Command type,具體定義見Comm.h
參數(shù): 	int comno:串口編號選擇,有1和2兩個值供選擇
參數(shù): 	int *data:需要從外部輸入和輸出的整型變量指針
參數(shù): 	int *Buf:需要從外部輸入和輸出的char型變量指針
參數(shù): 	EnumErrorCode *errinfo:需要從外部輸入的整型變量指針,用于存放產(chǎn)生的錯誤代碼
//
返回值:	無
注釋:
遺留的問題:無
//
**************************************************************************/
void DLLEXPORT ComInfo(int ComType, int comno,int *data,char *Buf,EnumErrorCode *errinfo)
{
	unsigned long int MsgLen;
	int temp,i;
	char str[100];
	BOOL bTemp;
	//	EnumCommand CommType;
	//	EnumAtom DataType;
	MAN_AMT_COMMAND CommType;
	//  MAN_AMT_ATOM	DataType;
#ifdef TESTCODE_DEBUG
	char Msg[300];
#endif
	
	if(comno==1) Rs232=sharedata->handle_com1; ////select com port
	else Rs232=sharedata->handle_com2;
	switch (ComType)  //command type
	{
		//Read Flash
		//輸入:data[0]: AMT_DATAADDR_ATOM, Flash address
		//		data[1]: AMT_DATALENGTH_ATOM, Data length
		//輸出:*Buf
		//		*errinfo
		//備注:目前無用
	case RDFLASH:  ////FLASH 讀命令
		amt_set_commandtype(cmdbuf,AMT_READFLASH_CMD); ////set command type
		amt_set_int(cmdbuf,AMT_DATAADDR_ATOM,data[0]); ////set command para 1(flash address)
		amt_set_int(cmdbuf,AMT_DATALENGTH_ATOM,data[1]);  ////set command para 2(data length)
		//DataType=AMT_DATA_ATOM;  ////set data type
		for(i=0;i<3;i++)	 ////check if there is com error
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo==enNoneErr) break;  //success
		}
		if(*errinfo!=0) break;  ////there is error
		CommType=amt_get_commandtype(cmdbuf); //get response command type
		if(CommType!=AMT_READFLASH_RSPCMD) 
		{
			*errinfo=ComRspTypeErr;  ////command type error
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code 
		if(*errinfo!=0)break;  ////there is error,break
		MsgLen=amt_get_bytes(cmdbuf,AMT_DATA_ATOM,Buf,0);
		amt_get_bytes(cmdbuf,AMT_DATA_ATOM,Buf,MsgLen);
		break;
		//Write Flash
		//輸入:data[0]: AMT_DATAADDR_ATOM, Flash address
		//		data[1]: data length
		//		*Buf: data
		//輸出:*errinfo
		//備注:目前無用
	case WRFLASH:  ////FLASH 寫命令
		amt_set_commandtype(cmdbuf,AMT_WRITEFLASH_CMD);  ////set command type
		amt_set_int(cmdbuf,AMT_DATAADDR_ATOM,data[0]); //para 1
		//amt_set_int(cmdbuf,AMT_DATALENGTH_ATOM,data[1]);
		amt_set_bytes(cmdbuf,AMT_DATA_ATOM,Buf,data[1]);//para 2
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();   //send command and read response
			if(*errinfo==enNoneErr) break; //
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf);  //get response command type
		if(CommType!=AMT_WRITEFLASH_RSPCMD)  //
		{
			*errinfo=ComRspTypeErr; //command type wrong
			break;
		}
		temp=amt_get_int(cmdbuf,AMT_DATALENGTH_ATOM); //get data length
		if(temp!=data[1]) //write data length not equal written data length?
		{
			*errinfo=5;  //set error no.
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM); //read error code     
		break;
		//讀取電池電壓ADC值
		//*Buf: NULL
		//輸出:*data(data[0])
		//		*errinfo
		//備注:
	case RDBATT:  ////電池電壓ADC值讀取
		amt_set_commandtype(cmdbuf,AMT_READ_BATTERY_CMD);     
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo==enNoneErr) break;   //
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf);  //get response command type
		if(CommType!=AMT_READ_BATTERY_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code   
		if(*errinfo!=0) break;
		*data=amt_get_int(cmdbuf,AMT_BATTERYVALUE_ATOM);  
		break;
		//TX turn on
		//輸入:
		//*data: data[0]	TX Mode	1:	單碼道單時隙TD-SCDMA信號
		//							2:	單碼道雙時隙TD-SCDMA信號
		//							3:	雙碼道單時隙TD-SCDMA信號
		//							4:	雙碼道雙時隙TD-SCDMA信號
		//		 data[1]	擴(kuò)頻因子0:	SF8
		//							1:	SF16
		//		 data[2]	Time Slot
		//		 data[3]	Channel No.:Frequency(MHz)*5
		//		 data[4]	Uppts	0:	不輸出Uppts
		//							1:	輸出Uppts
		//		 data[5]	Power Level:Power(dBm)+120	
		//*Buf: NULL
		//輸出:*errinfo
		//備注:
	case TXON:  ////開始發(fā)射命令
		amt_set_commandtype(cmdbuf,AMT_STARTTX_CMD);
		amt_set_int(cmdbuf,AMT_TXMODE_ATOM,data[0]); //
		amt_set_int(cmdbuf,AMT_SF_ATOM,data[1]);	 //
		amt_set_int(cmdbuf,AMT_TIMESLOT_ATOM,data[2]);  //
		amt_set_int(cmdbuf,AMT_POWER_ATOM,data[3]); //
		amt_set_int(cmdbuf,AMT_FREQ_ATOM,data[4]); //         
		amt_set_bool(cmdbuf,AMT_UPPTS_ATOM,data[5]); //
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo==enNoneErr) break;  //
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf);  //get response command type 
		if(CommType!=AMT_STARTTX_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code
		break;
		//TX turn off
		//*data: NULL
		//*Buf: NULL
		//輸入:無
		//輸出:*errinfo
		//備注:本功能必須在TXON執(zhí)行成功后方可使用
	case TXSTOP:  ////停止發(fā)射命令
		amt_set_commandtype(cmdbuf,AMT_STOPTX_CMD);   
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo==-100)	  //測試線程退出
			{
				//sharedata->TestStop=0;
				*errinfo=ComRw();   //
				//sharedata->TestStop=1;
			}
			if(*errinfo==enNoneErr) break;
		}
		if(*errinfo!=0) break;  
		CommType=amt_get_commandtype(cmdbuf);  //get response command type  
		if(CommType!=AMT_STOPTX_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code
		break;
		//改變發(fā)射功率
		//*Buf: NULL
		//輸入:*data(data[0])	Power Level:Power(dBm)+120
		//輸出:*errinfo
		//備注:本功能必須在TXON執(zhí)行成功后方可使用
	case TXPWR:  ////改變發(fā)射功率命令
		amt_set_commandtype(cmdbuf,AMT_CHANGETXPOWER_CMD);
		amt_set_int(cmdbuf,AMT_POWER_ATOM, data[0]);  //para 1:transmit power
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo==enNoneErr) break; //
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf);  //get response command type     
		if(CommType!=AMT_CHANGETXPOWER_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code        
		break;
		//改變發(fā)射頻率
		//*Buf: NULL
		//輸入:*data(data[0])	Channel No.:Frequency(MHz)*5
		//輸出:*errinfo
		//備注:本功能必須在TXON執(zhí)行成功后方可使用
	case TXFREQ:  ////改變發(fā)射頻點(diǎn)命令
		amt_set_commandtype(cmdbuf,AMT_CHANGETXFREQ_CMD); 
		amt_set_int(cmdbuf,AMT_FREQ_ATOM, data[0]);   //para 1:transmit frequency
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo==enNoneErr) break;  //
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf); //get response command type
		if(CommType!=AMT_CHANGETXFREQ_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code
		break;
		//進(jìn)入接收狀態(tài)
		//*Buf: NULL
		//輸入:*data(data[0])	Channel No.:Frequency(MHz)*5
		//輸出:*errinfo
		//備注:
	case RXON:  ////進(jìn)入接收狀態(tài)
		amt_set_commandtype(cmdbuf,AMT_STARTRX_CMD); 
		amt_set_int(cmdbuf,AMT_FREQ_ATOM, data[0]);  //DL channel no.
		for(i=0;i<1;i++)
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo>-1) break; //
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf);  //get response command type  
		if(CommType!=AMT_STARTRX_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
#ifdef TESTCODE_DEBUG
			memset(Msg,0,sizeof(Msg));
			temp=(int)CommType;
			sprintf(Msg,"Command Type is error!\n error Command type is %d\n",temp);
			SetCtrlVal(msgpanel, TEXTPANEL_TEXTBOX, Msg);
#endif 
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code
		break;
		//退出接收狀態(tài)
		//*data: NULL
		//*Buf: NULL
		//輸入:無
		//輸出:*errinfo
		//備注:本功能必須在RXON執(zhí)行成功后方可使用
	case RXSTOP:  ////退出接收狀態(tài)
		amt_set_commandtype(cmdbuf,AMT_STOPRX_CMD);   
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo==-100)  ////測試線程退出
			{
				//sharedata->TestStop=0; 
				*errinfo=ComRw();  
				//sharedata->TestStop=1; 
			}
			if(*errinfo==enNoneErr) break;
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf);  //get response command type 
		if(CommType!=AMT_STOPRX_RSPCMD)
		{
			*errinfo=ComRspTypeErr;			  //
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code
		break;
		//讀取接收到的業(yè)務(wù)數(shù)據(jù)
		//輸入:*data:	data[0]	Time Slot(默認(rèn)為4)
		//				data[1]	Frame number,需要讀取的幀數(shù)
		//				data[2]	Power Level:Power(dBm)+110
		//輸出:*data:	data[i*2+3]返回的每幀數(shù)據(jù)的幀號,i=0,1,...,data[1]-1
		//				data[i*2+4]返回的每幀數(shù)據(jù)的長度,i=0,1,...,data[1]-1
		//		*Buf: 讀取到的業(yè)務(wù)數(shù)據(jù),byte型
		//		*errinfo
		//備注:本功能必須在RXON執(zhí)行成功后方可使用
	case RXDATA:  ////傳送譯碼過后的數(shù)據(jù)
		//Com_init();
		FlushInQ (Rs232);  //Removes all characters from the input queue of the COM port
		FlushOutQ (Rs232);
		amt_set_commandtype(cmdbuf,AMT_RXDATA_CMD); 
		amt_set_int(cmdbuf,AMT_TIMESLOT_ATOM,data[0]);  //時隙點(diǎn)
		amt_set_int(cmdbuf,AMT_FRAMECOUNT_ATOM,data[1]);  //幀數(shù)
		amt_set_int(cmdbuf,AMT_POWER_ATOM,data[2]);  //功率
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo==enNoneErr) break; //
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf);  //get response command type
		if(CommType!=AMT_RXDATA_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code   
		if(*errinfo!=0) break;
		data[3]=amt_get_int(cmdbuf,AMT_FRAMEINDEX_ATOM);  //幀號(索引號)
		data[4]=amt_get_bytes(cmdbuf,AMT_DATA_ATOM,Buf,0);  //第一幀長度
		amt_get_bytes(cmdbuf,AMT_DATA_ATOM,Buf,data[4]);  //第一幀譯碼后的數(shù)據(jù) 
		if(data[1]>1)			 //接收不止1幀,
		{
			temp=data[1];		//幀數(shù)
			MsgLen=data[4];		//長度
			for(i=1;i<data[1];i++)
			{
				*errinfo=Com_Rd(5);   //0.5更改
				if(*errinfo==0)
				{
					CommType=amt_get_commandtype(cmdbuf);  //get response command type  
					*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);   
					if(*errinfo==0)
					{
						data[i*2+3]=amt_get_int(cmdbuf,AMT_FRAMEINDEX_ATOM);  	    //data[5] 楨號(索引號)
						data[i*2+4]=amt_get_bytes(cmdbuf,AMT_DATA_ATOM,0,0);		//data[6] 數(shù)據(jù)長度
						amt_get_bytes(cmdbuf,AMT_DATA_ATOM,&Buf[MsgLen],data[i*2+4]);//數(shù)據(jù)
						MsgLen=MsgLen+data[i*2+4];
					}
				}
				if(*errinfo!=0) temp=temp-1;
			}
			data[1]=temp;   //data[1]:實際接收到的幀數(shù)
		}
		break;
		//傳送IQ的數(shù)據(jù)
		//輸入:*data: data[1]	Power Level:Power(dBm)+110

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
香蕉成人伊视频在线观看| 中文字幕亚洲区| 亚洲成人综合在线| 欧美影视一区在线| 婷婷综合久久一区二区三区| 欧美偷拍一区二区| 麻豆精品视频在线| 久久九九国产精品| 91麻豆文化传媒在线观看| 一级中文字幕一区二区| 欧美日韩成人综合| 韩国成人福利片在线播放| 国产精品美女久久久久久久久| 色综合久久中文字幕| 午夜精品久久一牛影视| 精品国产在天天线2019| aaa欧美日韩| 亚洲一区二区三区四区在线| 日韩一区二区三区在线观看| 国产精品白丝jk白祙喷水网站| 综合电影一区二区三区 | 欧美男男青年gay1069videost| 日韩国产在线观看一区| 久久人人97超碰com| av中文字幕不卡| 日韩高清在线一区| 日本一区免费视频| 欧美酷刑日本凌虐凌虐| 狠狠色综合日日| 一区二区三区四区av| 日韩精品一区二区三区蜜臀| 成人综合婷婷国产精品久久免费| 亚洲一区二区在线免费看| 精品国产电影一区二区| 91老师国产黑色丝袜在线| 蜜桃av一区二区在线观看| 国产精品成人一区二区艾草 | 不卡av在线免费观看| 亚洲伦在线观看| 精品久久一区二区三区| 99精品国产91久久久久久| 蜜臀久久99精品久久久久久9| 国产精品久久久久影院亚瑟| 欧美精品亚洲一区二区在线播放| 国产高清精品网站| 天堂va蜜桃一区二区三区漫画版| 亚洲国产经典视频| 日韩免费性生活视频播放| 色激情天天射综合网| 国产成人av福利| 日韩电影免费在线看| 一区二区三区在线视频免费观看| 久久综合精品国产一区二区三区| 欧美少妇xxx| www.亚洲在线| 国产精品一区二区果冻传媒| 香蕉久久一区二区不卡无毒影院| 亚洲图片一区二区| 国产婷婷一区二区| 久久综合九色综合97婷婷| 91精品午夜视频| 欧美色图在线观看| 在线观看网站黄不卡| 粉嫩嫩av羞羞动漫久久久 | 高清不卡在线观看av| 美女视频网站黄色亚洲| 亚洲成在线观看| 亚洲精品视频在线观看网站| 中文欧美字幕免费| 久久精品在这里| 久久久久国产精品免费免费搜索| 91精品国产综合久久精品app| 欧美伊人久久大香线蕉综合69| 99久久夜色精品国产网站| 本田岬高潮一区二区三区| 国产精品亚洲视频| 韩国一区二区在线观看| 久久99久久99小草精品免视看| 免费在线一区观看| 久久国产精品区| 美日韩黄色大片| 麻豆成人久久精品二区三区红| 日韩av电影天堂| 免费欧美日韩国产三级电影| 午夜国产精品影院在线观看| 亚洲成人1区2区| 日韩电影在线一区二区三区| 日日摸夜夜添夜夜添亚洲女人| 日本美女一区二区| 久久69国产一区二区蜜臀| 国产在线麻豆精品观看| 国产成人高清在线| 成人黄色av电影| 99久久99久久精品免费观看| 在线免费一区三区| 7777女厕盗摄久久久| 欧美成人国产一区二区| 国产欧美一区二区精品忘忧草| 国产蜜臀97一区二区三区| 亚洲三级在线播放| 日韩激情在线观看| 国产一区二区三区精品视频| 成人av资源站| 欧美日高清视频| 亚洲精品一区二区三区99| 欧美极品少妇xxxxⅹ高跟鞋 | 国产欧美精品一区二区色综合朱莉| 国产午夜精品久久久久久久| 亚洲欧洲色图综合| 亚洲成国产人片在线观看| 狠狠色狠狠色综合系列| 91欧美一区二区| 欧美日产国产精品| 国产亚洲成aⅴ人片在线观看| 亚洲人成精品久久久久| 日韩avvvv在线播放| 成人禁用看黄a在线| 欧美日韩国产电影| 中文字幕乱码久久午夜不卡| 亚洲一区国产视频| 国产福利一区二区三区视频| 91黄色免费看| 久久综合九色综合欧美98| 亚洲综合无码一区二区| 九九精品一区二区| 欧美在线免费视屏| 久久精品亚洲麻豆av一区二区 | 欧美一区二区啪啪| 国产精品视频你懂的| 日本在线不卡视频一二三区| 国产成人超碰人人澡人人澡| 欧美亚洲日本国产| 久久久久免费观看| 香蕉久久一区二区不卡无毒影院| 成人精品国产免费网站| 欧美大胆人体bbbb| 亚洲电影在线播放| 91在线无精精品入口| 久久婷婷久久一区二区三区| 五月天精品一区二区三区| 91啪亚洲精品| 国产精品毛片大码女人| 精品一区二区三区在线播放 | 久久久国产综合精品女国产盗摄| 午夜精品一区在线观看| 99re这里都是精品| 欧美韩国一区二区| 激情综合色播激情啊| 3atv一区二区三区| 一区二区三区电影在线播| 成人久久久精品乱码一区二区三区 | av男人天堂一区| 久久免费国产精品| 美腿丝袜亚洲综合| 91麻豆精品国产91久久久久久 | 亚洲成va人在线观看| 在线一区二区三区做爰视频网站| 国产精品久久网站| 成人国产精品视频| 中文字幕第一区二区| 国产精品 欧美精品| www成人在线观看| 久久不见久久见免费视频1| 777xxx欧美| 免费欧美在线视频| 日韩一级完整毛片| 捆绑调教一区二区三区| 日韩一区二区三区在线视频| 毛片一区二区三区| 欧美一区二区三区色| 另类人妖一区二区av| 欧美成人性福生活免费看| 老司机午夜精品99久久| 精品国产精品一区二区夜夜嗨| 久久99热这里只有精品| 欧美精品一区二区不卡| 国产伦精品一区二区三区免费| 久久精品一区二区三区不卡牛牛| 国产乱码一区二区三区| 国产色产综合色产在线视频| 成人午夜私人影院| 18成人在线视频| 欧美影院午夜播放| 久久精品国产99国产| 久久久久久久久久久99999| 粉嫩欧美一区二区三区高清影视| 国产精品福利影院| 欧美色老头old∨ideo| 肉色丝袜一区二区| 精品久久一区二区三区| 成人一级片网址| 亚洲美女淫视频| 欧美一级在线视频| 国产成人午夜视频| 亚洲欧洲国产日韩| 欧美久久久久久久久中文字幕| 久久精品国产精品亚洲综合| 国产三区在线成人av| 一本大道久久a久久综合婷婷 | 精品一区二区三区视频在线观看|