當前位置:首頁 » 編程語言 » c語言讀取串口

c語言讀取串口

發布時間: 2024-11-12 03:23:01

⑴ C語言用read讀取串口信息,按每位元組讀取和一次性讀取一定長度效率上有區別嗎

肯定有區別的,而且相差還比較大。
因為read是用戶態程序,然後每read一次都對應一次系統調用 (從用戶態切換到內核態,再切回到用戶態),其實耗時最多的就是狀態切換。
如果一次性讀取5個位元組,那麼就只有一次系統調用(兩個狀態切換),
如果一次讀一位元組,需要讀5次,就有5次系統調用 (10個狀態切換)。
具體相差多大,跟實際的環境有關,測試的話要大量的數據才能看出來。

⑵ VS或者VC6.0編寫的C語言程序,怎樣能夠實現串口數據的收發

1 、Windows API通信函數方法 。與通信有關的Windows API函數共有26個,但主要有關的有: CreateFile() 用 「comn」(n為串口號)作為文件名就可以打開串口。 ReadFile() 讀串口。

2、WriteFile() 寫串口。 CloseHandle() 關閉串口句柄。初始化時應注意CreateFile()函數中串兆鍵口共享方式應設為0,串口為不可共享設備,其它與一般文件讀寫類似。以下給出API實現的源代碼。



3、利用埠函數直接操作 。這種方式主要是採用兩個埠函數_inp(), _outp()實現對串口的讀寫,其中讀埠函數的原型為: int _inp(unsigned shot port) 。該函數從埠讀取一個位元組,埠號為0~65535。 寫埠的函數原型為: nt _outp(unsigned shot port, int databyte) 。

4、 MSComm控制項 。MSComm控制項是微軟開發的專用通信控制項,封裝了串口的所有功能,使用很方便,但在實際應用中要小心對其屬性進行配置。下面詳細說明該類應用方法族坦巧。



⑶ c 獲取串口號 c 自動獲取串口號

用C怎麼寫獲取串口的內容

看驅動程序的介面啊

一般是是open(「口名」)

用C/C++寫一扒游個小程序讀取串口接收到賀此銷的數據

你太幸運了,剛好我有一個,你在禪游vc++6.0下測試一下。

/* serrecv.c */

/* Receives and saves a file over a serial port */

/* Last modified: Septemeber 21, 2005 */

/* [goman89] */

#include

#include

#include

/* Function to print out usage information */

void usage(void);

/* Function to set up the serial port settings with the specified baud rate,

no parity, and one stop bit */

void set_up_serial_port(HANDLE h, long baud);

/* Function to receive and save file from serial port */

void get_file_from_serial_port(HANDLE h, char *file_name, unsigned long file_length);

int main(int argc, char **argv)

{

HANDLE serial_port; /* Handle to the serial port */

long baud_rate = 9600; /* Baud rate */

char port_name[] = "COM1:"; /* Name of serial port */

unsigned long file_size; /* Size of file to receive in bytes */

unsigned long bytes_received; /* Bytes received from serial port */

unsigned long file_name_size; /* Size of file name in bytes */

char file_name[256]; /* Name of file to receive */

/* Check mand line */

if (argc == 3)

{

/* Read in baud rate */

if (argv[1][1] != 'b' || sscanf(argv[2], "%ld", &baud_rate) != 1)

{

usage;

exit(0);

}

}

else if (argc != 1)

{

usage;

exit(0);

}

/* Open up a handle to the serial port */

serial_port = CreateFile(port_name, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);

/* Make sure port was opened */

if (serial_port == INVALID_HANDLE_VALUE)

{

fprintf(stderr, "Error opening port ");

CloseHandle(serial_port);

exit(0);

}

/* Set up the serial port */

set_up_serial_port(serial_port, baud_rate);

/* Receive file name size from serial port */

ReadFile(serial_port, (void *)&file_name_size, sizeof(unsigned long), &bytes_received, NULL);

if (bytes_received != sizeof(unsigned long))

{

fprintf(stderr, "Error getting file name size. ");

CloseHandle(serial_port);

exit(0);

}

/* Receive file name from serial port */

ReadFile(serial_port, (void *)file_name, file_name_size, &bytes_received, NULL);

if (bytes_received != file_name_size)

{

fprintf(stderr, "Error retrieving file name. ");

CloseHandle(serial_port);

exit(0);

}

/* Append NULL terminator to end of string */

file_name[bytes_received] = ''

/* Receive file size from serial port */

ReadFile(serial_port, (void *)&file_size, sizeof(unsigned long), &bytes_received, NULL);

if (bytes_received != sizeof(unsigned long))

{

fprintf(stderr, "Error getting file size. ");

CloseHandle(serial_port);

exit(0);

}

/* Get the file from the serial port */

get_file_from_serial_port(serial_port, file_name, file_size);

/* Print out success information */

printf(" %lu bytes successfully received and saved as %s ", file_size, file_name);

/* Close handle */

CloseHandle(serial_port);

return 0;

}

void usage(void)

{

fprintf(stderr, "Usage: ");

fprintf(stderr, " serrecv [-b baud rate] ");

fprintf(stderr, " Default baud rate is 9600 ");

fprintf(stderr, "tSupported baud rates: 1200, 2400, 4800, 9600, 14400, 19200 ");

return;

}

void set_up_serial_port(HANDLE h, long baud)

{

DCB properties; /* Properties of serial port */

/* Get the properties */

GetmState(h, &properties);

/* Set the baud rate */

switch(baud)

{

case 1200:

properties.BaudRate = CBR_1200;

break;

case 2400:

properties.BaudRate = CBR_2400;

break;

case 4800:

properties.BaudRate = CBR_4800;

break;

case 9600:

properties.BaudRate = CBR_9600;

break;

case 14400:

properties.BaudRate = CBR_14400;

break;

case 19200:

properties.BaudRate = CBR_19200;

break;

case 38400:

properties.BaudRate = CBR_38400;

break;

default:

fprintf(stderr, "Invalid baud rate: %ld ", baud);

usage;

exit(0);

break;

}

/* Set the other properties */

properties.Parity = NOPARITY;

properties.ByteSize = 8;

properties.StopBits = ONESTOPBIT;

SetmState(h, &properties);

return;

}

void get_file_from_serial_port(HANDLE h, char *file_name, unsigned long file_length)

{

FILE *data_file; /* File to create */

unsigned long bytes_left = file_length; /* Bytes left to receive */

unsigned long bytes_received_total = 0; /* Total bytes received */

unsigned long bytes_to_receive; /* Number of bytes to receive */

unsigned long bytes_received; /* Number of bytes receive */

char buffer[200]; /* Buffer to store data */

/* Open the file */

data_file = fopen(file_name, "wb");

/* Quit if file couldn't be opened */

if (data_file == NULL)

{

fprintf(stderr, "Could not create file %s ", file_name);

CloseHandle(h);

exit(0);

}

while (1)

{

/* Determine how many bytes to read */

if (bytes_left == 0)

{

break;

}

else if (bytes_left < 200)

{

bytes_to_receive = bytes_left;

}

else

{

bytes_to_receive = 200;

}

/* Receive data over serial cable */

ReadFile(h, (void *)buffer, bytes_to_receive, &bytes_received, NULL);

if (bytes_received != bytes_to_receive)

{

fprintf(stderr, "Error reading file. ");

CloseHandle(h);

exit(0);

}

/* Save buffer to file */

fwrite((void *)buffer, 1, bytes_received, data_file);

/* Decrement number of bytes left */

bytes_left -= bytes_received;

/* Increment number of bytes received */

bytes_received_total += bytes_received;

/* Print out progress */

printf(" %5lu bytes received.", bytes_received_total);

}

fclose(data_file);

return;

}

C語言變成實現串口收發數據

#include

#include

intmain(void)

{

FILE*fp;

chartemp;

charbuf[100];

if((fp=fopen("3","r"))==NULL)

puts("thiswaydoesn'twork! ");

else

puts("thiswayworks! ");

while(1)

{

temp=0;

fscanf(fp,"%c",&temp);

if(temp!=0)

putchar(temp);

else

Sleep(100);

}

fclose(fp);

return0;

}

以前弄的,好久沒看了,不知到對不對。

還有下面這段:

#include

#include

HANDLEh;

intmain(void)

{

h=CreateFile(TEXT("COM3"),//COM1口

GENERIC_READ|GENERIC_WRITE,//允許讀和寫

0,//獨方式

NULL,

OPEN_EXISTING,//打開而不是創建

0,//同步方式

NULL);

if(h==(HANDLE)-1)

{

printf("打開COM失敗! ");

returnFALSE;

}

else

{

printf("COM打開成功! ");

}

Setupm(h,1024,1024);//輸入緩沖區和輸出緩沖區大小都是1024

COMMTIMEOUTSTimeOuts;

//設讀超時

TimeOuts.ReadIntervalTimeout=1000;

TimeOuts.ReadTotalTimeoutMultiplier=500;

TimeOuts.ReadTotalTimeoutConstant=5000;

//設定寫超時

TimeOuts.WriteTotalTimeoutMultiplier=500;

TimeOuts.WriteTotalTimeoutConstant=2000;

SetmTimeouts(h,&TimeOuts);//設置超時

DCBdcb;

GetmState(h,&dcb);

dcb.BaudRate=9600;//波特率為9600

dcb.ByteSize=8;//每個位元組有8位

dcb.Parity=NOPARITY;//無奇偶校驗位

dcb.StopBits=ONE5STOPBITS;//兩個停止位

SetmState(h,&dcb);

DWORDwCount;//讀取的節數

BOOLbReadStat;

while(1)

{

Purgem(h,PURGE_TXCLEAR|PURGE_RXCLEAR);//清緩沖區

charstr[9]={0};

printf("%s ",str);

bReadStat=ReadFile(h,str,9,&wCount,NULL);

if(!bReadStat)

{

printf("

怎麼通過串口讀取51單片機某個地址的數據?請用C語言寫出來。

*

授人以魚,不如授人以漁

*

首先,你要明確在C語中讀取內存址是基於指針。

3.比如讀取內存地址0x22中的數據

C語言中對於內存的訪是基於指,這個毋庸置疑,具體操如下

unsigned int *p= (unsigned int*)0x22 ;//定義針,並且使指針指向了0x22這個 內存地址;

那麼*p就是最終你要讀取的數據了。

4.至於如何通過串口顯示到電腦我就不多了(這不是難點),據你都知道了,寫到串口 緩沖區,在串口調試助手下就可以看到。

5.雖然沒有貼出具體代碼,但這裡面的思想可以讓你解決

標簽:作文經典 上一篇:描寫毛毛蟲的詞語 描寫毛毛蟲行動的詞語 下一篇:成語誤用褒貶的例子 褒貶誤用的成語

Linux下如何使用c/c++實現檢測新增串口,並讀取串口號

Linux下面有設文件

串口裝好驅動後 會顯示在dev下

然後對這個

C語言中如何對串口進行操作

C語言會有操作串口的庫函數的,按照串口庫數標識實現調

電腦上的串口號是什麼意思

串口叫做串列介面,也串列通信介面,按電氣標准及協議來分包括RS-232-C、RS-422、RS485、USB等。 RS-232-C、RS-422與RS-485標准對介面的電氣特性做出規定,不涉及接插件、電纜或協議。USB是近幾年發展起來的新型介面標准,主要應用於速數據傳輸域。 RS-232-C:也稱標准串口,是目前最常用的一種串列通訊介面。它是在1970年由美國電子工業協會(EIA)聯合貝爾系統、 數據機廠家及計算機終端生產廠共同制定的用於串列通訊的標 准。它的名是「數據終端設備(DTE)和數據通訊設備(DCE)之間 行二進制數據交換介面技術標准」。傳統的RS-232-C介面標准有22根線,採用標准25芯D型插頭座。後來的PC上使用簡化了的9芯D插座。現在應用中25芯插頭已很少採用。現在的電腦般有兩個串列口:COM1和COM2,你到計算機後面能看到9針D形介面就是了。現在有很多手數據線或者物流接收器都採用COM

如何用C語言寫一個讀、寫串口的程序?

大致過程就是

配置串口通信,包串口號、波特、驗位、停止位這些信息;

打開串口,和打開文件一樣,在Linux是這樣,Windows下沒試過,估計也差不多;

發送數據,即寫串口,就跟寫文件類似;

讀取

編寫單片機串口收發數據的完整程序(C語言編寫)

我用的新唐晶元,8051內核,跟51差不多,望採納

void UART_Initial (void)

{

P02_Quasi_Mode; //Setting UART pin as Quasi mode for tran *** it

P16_Quasi_Mode; //Setting UART pin as Quasi mode for tran *** it

SCON_1 = 0x50; //UART1 Mode1,REN_1=1,TI_1=1

T3CON = 0x08; //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1), UART1 in MODE 1

clr_BRCK;

RH3 = HIBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */

RL3 = LOBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */

set_TR3; //Trigger Timer3

}

以上是初始化的

void Send_Data_To_UART1(UINT8 c)

{

TI_1 = 0;

SBUF_1 = c;

while(TI_1==0);

}

這個是發送

void UART_isr (void) interrupt 4 //

怎樣在WINDOWS下用C語言編寫串口接收數據程序

#include

#include

int main(void)

{

FILE *fp;

char temp;

char buf[100];

if((fp = fopen("3","r")) == NULL)

puts("this way doesn't work! ");

else

puts("this way works! ");

while(1)

{

temp = 0;

fscanf(fp,"%c",&temp);

if(temp != 0)

putchar(temp);

else

Sleep(100);

}

fclose(fp);

return 0;

}

以前的,好久看,不知到對不對。

還下面這段:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

#include

#include

HANDLE h;

int main(void)

{

h=CreateFile(TEXT("COM3"),//COM1口

GENERIC_READ|GENERIC_WRITE, //允許讀和寫

0, //獨占方式

NULL,

OPEN_EXISTING, //打開而不是建

0, //同步式

NULL);

if(h==(HANDLE)-1)

{

printf("打開COM失敗! ");

return FALSE;

}

else

{

printf("COM打開成功! ");

}

Setupm(h,1024,1024); //輸入緩沖區和輸出緩沖區的大小都是1024

COMMTIMEOUTS TimeOuts;

//定讀超時

TimeOuts.ReadIntervalTimeout=1000;

TimeOuts.ReadTotalTimeoutMultiplier=500;

TimeOuts.ReadTotalTimeoutConstant=5000;

//設定寫超時

TimeOuts.WriteTotalTimeoutMultiplier=500;

TimeOuts.WriteTotalTimeoutConstant=2000;

SetmTimeouts(h,&TimeOuts); //設置超時

DCB dcb;

GetmState(h,&dcb);

dcb.BaudRate=9600; //波特率為9600

dcb.ByteSize=8; //每個位元組有8位

dcb.Parity=NOPARITY; //無奇偶校驗位

dcb.StopBits=ONE5STOPBITS; //兩個停止位

SetmState(h,&dcb);

DWORD wCount;//讀取的位元組

BOOL bReadStat;

while(1)

{

Purgem(h,PURGE_TXCLEAR|PURGE_RXCLEAR); //清空緩沖區

char str[9]={0};

printf("%s ",str);

bReadStat=ReadFile(h,str,9,&wCount,NULL);

if(!bReadStat)

{

printf("讀串口

標簽:作文經典 上一篇:描寫毛毛蟲的詞語 描寫毛毛蟲行動的詞語 下一篇:成語誤用褒貶的例子 褒貶誤用的成語

⑷ windows下C語言怎麼對串口進行讀寫操作

windows下對串口的操作可以通過WindowsAPI進行,也可以通過Linux下的read什麼的直接操作,但是這種情況需要了解電路結構,比較麻煩,第三種有第三方提供的庫,但是大多數針對C++,所以可能比較難找到順手的第三方庫.
那麼,接下來就見要介紹一下串口通信用WindowsAPI通信的方式.

我們會發現,在文件名的位置填上"comX" X表示com口號,超過十的com口號需要另外的書寫方式,這里不說了,因為網上一抓一大把,接下來,我們要對串口進行一系列的明確設置,這里就用到了一個結構體DCB結構,是專門用來描述一個com口的工作方式的,由於次結構體有28個成員,非常多,而且大部分的設置都是全世界通用的,所以,我們偷個懶,在打開一個com口之後,建立DCB結構體,接下來調用一個函數GetCommState用這個函數把現在com口的數據都寫到DCB里,這樣,比較通用的com口設置就已經弄好了,我們一般情況下只需要改一下DCB的波特率就好了,改好後馬上用SetCommState把剛改好的結構體再寫回去,這樣串口就設置好了,現在還有點麻煩,串口設置好了,我們要它干什麼呢?廢話,讀寫數據唄,嘟~~~~~~可不能用fwrite和fread因為這個com口句柄不是文件句柄,是內核句柄,要用ReadFile和WriteFile來進行讀寫,又出麻煩了,我們怎麼知道單片機什麼時候發數據過來,就算我們知道,計算機什麼時候知道啊?所以,一般的情況下,用ReadFile一直在哪檢查,又是麻煩,通常情況下,一個com口的ReadFile設置是阻塞函數,影響編程啊!!!!!!

怎麼辦,很簡單,你不阻塞嗎,打通你唄,我們再建立里一個結構體COMMTIMEOUTS這個結構體描述里一個com口的相關超時設置,我們用GetCommTimeouts把數據讀回來,具體的設置方法在網上也有,但是要注意,有一個MAXDWORD用它來設置讀間隔超時設置就可以使ReadFile向kbhit()函數一樣完全非阻塞了.
經過一些列的設置,事實上,現在已經可以通信了,要是有人覺得緩存不舒服,用SetupComm函數來重設緩存大小,對於傳輸速度比較快的通信,要把緩存設置的大些.

⑸ 怎麼用C語言中斷方式實現串口的讀寫

#include <stdio.h>
#include <dos.h>
#include <time.h>

#define LSB 0
#define MSB 1

#define RXR 0
#define TXR 0
#define IER 1
#define IIR 2
#define LCR 3
#define MCR 4
#define LSR 5
#define MSR 6

#define Com1_base 0x3f8
#define uchar unsigned char

volatile uchar inputData;
volatile uchar onInput = 0x00;
volatile uchar onOutput = 0x00;
volatile uchar inputdata[256]; /*設設置接收緩沖區大小*/
volatile unsigned int count; /*中斷接收的數據數目*/
int datacount;/*當前已發送數據條數*/

void interrupt (*OldVect)(); /*函數是用來獲取中斷處理程序的入口地址的*/
void interrupt SerialISR();

void InitCom()
{
uchar inttemp;
/*設置波特率什麼的*/
outportb(Com1_base+LCR,0x80); /*使LCR的高位為1,以便讀取其它寄存器*/
outportb(Com1_base+LSB,0x0c); /*除數鎖存器(低8位)DLL*/
outportb(Com1_base+MSB,0x00); /*除數鎖存器(高8位)DLH 產生2400波特率*/
outportb(Com1_base+LCR,0x03); /*8位數據,1位停止位,無校驗*/
outportb(Com1_base+IER,0x01); /*接收採用中斷方式*/

/*設置中斷向量*/
OldVect = getvect(0x0c); /*函數是用來獲取中斷處理程序的入口地址的*/
disable();
inttemp = inportb(0x21)&0xef;
outportb(0x21,inttemp);
setvect(0x0c,SerialISR); /*設置SerialISR的中斷入口地址為0X0C*/
enable();
}

void CloseCom()
{
disable();
outportb(Com1_base+IER,0x00); *禁止中斷*/
outportb(Com1_base,0x00);
outportb(0x21,inportb(0x21)|~(0xef));
setvect(0x0c,OldVect);
}

void interrupt SerialISR()
{
/*串口中斷服務代碼*/
inputData = inportb(Com1_base+RXR);
onInput = 0x01;
inputdata[count]=inputData;
count++;
/*服務代碼結束*/
outportb(0x20,0x20); /*中斷結束的代碼*/
}

void SendChar(uchar key)
{
while( ((inportb(Com1_base + LSR)) & 0x40) == 0);
outportb(Com1_base + TXR,key);
}
/*...........延時函數......................*/
void delay(unsigned int n)
{
unsigned int i,k;
for(k=0;k<n;k++)
{
for(i=1;i<1142;i++)
;
}
}

/*........CDMA命令發送函數.................*/
void CDMA_CommandSend(char *p,unsigned int n)
{

int i,k,m,l;
int flag=0;
int selse_flag=0; int selse_flag_1=0;
int selse_flag1=0;int selse_flag1_1=0;
time_t start,end;
double dif=0;
char a;

uchar bExit_flag = 0x00;
count=0;
while(!bExit_flag)
{
count=0;
for(i=0;i<n;i++)
{SendChar(*p);delay(9000);p++;}

/*..........等待2S..................*/
time (&start);
dif=0;
while(dif<2)
{
delay(9000);
time (&end);
dif = difftime (end,start);
}
if(count>14)
{
time (&start);
dif=0;
while(dif<3)
{
delay(9000);
time (&end);
dif = difftime (end,start);
}
}

/*..........判斷發送命令是否成功..................*/
for(m=0;m<count;m++)
{
if(count>10)
{
for(l=0;l<count;l++)
{
if(inputdata[l-1]=='N'&&inputdata[l-2]=='E'&&inputdata[l-3]=='P'&&inputdata[l-4]=='O'&&inputdata[l-5]=='P'&&inputdata[l-6]=='P'&&inputdata[l-7]=='P'&&inputdata[l-8]=='V') { selse_flag_1=1;}
if(inputdata[l-1]=='N'&&inputdata[l-2]=='E'&&inputdata[l-3]=='P'&&inputdata[l-4]=='O'&&inputdata[l-5]=='P'&&inputdata[l-6]=='C'&&inputdata[l-7]=='T'&&inputdata[l-8]=='V') { selse_flag1_1=1;}
}

if(selse_flag_1==1){if(inputdata[m-1]=='3'&&inputdata[m-2]=='3'&&inputdata[m-3]==':'&&inputdata[m-4]=='T') selse_flag=1;}
if(selse_flag1_1==1){if(inputdata[m-1]=='0'&&inputdata[m-2]==','&&inputdata[m-3]=='1'&&inputdata[m-4]==':'&&inputdata[m-5]=='N') selse_flag1=1;}

if(selse_flag_1==1||selse_flag1_1==1)
{
if(selse_flag==1) {if(inputdata[m-1]=='0'&&inputdata[m-2]==':'&&inputdata[m-3]=='N'&&inputdata[m-4]=='E') flag=1;}
if(selse_flag1==1) {if(inputdata[m-1]=='0'&&inputdata[m-2]==','&&inputdata[m-3]=='1'&&inputdata[m-4]==':'&&inputdata[m-5]=='S') flag=1;}
}
else {if(inputdata[m-1]=='O'&&inputdata[m]=='K') {flag=1; }}
}
else {if(inputdata[m-1]=='O'&&inputdata[m]=='K') flag=1; }
}
if(flag==1){bExit_flag = 0x01;}
else {p=p-n; }

for(i=0;i<count;i++) printf("%c",inputdata[i]);
/*........按空格停止測試.............................*/
if(kbhit()){a=getch(); if(a==' '){CloseCom(); exit(1);}}

}
}

/*........數據測試發送任務.....................*/
void Data_Send(char *pcomd,int n,char *pdata,int m)
{
int i,k,l;time_t start,end;
double dif=0;
count=0;
for(i=0;i<n;i++)
{
SendChar(*pcomd);delay(9000);pcomd++;
}
time (&start);
dif=0;
while(dif<0.2)
{
delay(9000);
time (&end);
dif = difftime (end,start);
}

for(l=0;l<m;l++)
{
SendChar(*pdata);pdata++;
}

printf("The data num:%d",datacount);
datacount++;
}

void main()
{int i;char a;
/*........模塊測試命令..................................*/
uchar CDMA_COMMAND_1[]={"at\r"};
uchar CDMA_COMMAND_2[]={"atz\r"};
uchar CDMA_COMMAND_3[]={"ate1v1\r"};
uchar CDMA_COMMAND_4[]={"AT+CRM=1;+CPS=33;+CMUX=1;+CTA=0\r"};
uchar CDMA_COMMAND_5[]={"AT+VPPPOPEN\r"};
uchar CDMA_COMMAND_6[]={"AT+VTCPOPEN=1,\"60.63.42.129\",1234\r"};
uchar CDMA_COMMAND_7[]={"AT+VTCPSEND=1,20\r"};
uchar CDMA_DATA[]={"ABCDEFGHIJKLMNOPQRST"};
uchar CDMA_COMMAND_9[]={"AT+VPPPCLOSE\r"};
uchar CDMA_COMMAND_8[]={"AT+VTCPCLOSE=1\r"};
uchar bExit_flag1 = 0x00;
time_t start,end;
double dif=0;
InitCom();/*初始化埠1*/
inputData = inportb(Com1_base+RXR);
while(!bExit_flag1)
{
/*.................................................................*/
if(kbhit()) /*按任意鍵開始測試CDMA*/
{
/*.............................................................. ...*/

/*.........發送TCP斷開命令.....................................*/
CDMA_CommandSend(CDMA_COMMAND_8,strlen(CDMA_COMMAND_8));
/*.........發送PPP斷開命令......................................*/
CDMA_CommandSend(CDMA_COMMAND_9,strlen(CDMA_COMMAND_9));

/*.........發送AT命令..........................................*/
CDMA_CommandSend(CDMA_COMMAND_1,strlen(CDMA_COMMAND_1));
/*.........發送ATZ命令.........................................*/
CDMA_CommandSend(CDMA_COMMAND_2,strlen(CDMA_COMMAND_2));
/*.........發送ATE1V1命令......................................*/
CDMA_CommandSend(CDMA_COMMAND_3,strlen(CDMA_COMMAND_3));
/*.........發送AT初始化命令....................................*/
CDMA_CommandSend(CDMA_COMMAND_4,strlen(CDMA_COMMAND_4));
/*.........發送PPP拔號命令.....................................*/
CDMA_CommandSend(CDMA_COMMAND_5,strlen(CDMA_COMMAND_5));
/*.........發送網路連接命令....................................*/
CDMA_CommandSend(CDMA_COMMAND_6,strlen(CDMA_COMMAND_6));
/*.........發送數據............................................*/
datacount=0;
while(1)
{
Data_Send(CDMA_COMMAND_7,strlen(CDMA_COMMAND_7),CDMA_DATA,strlen(CDMA_DATA));

time (&start);
dif=0;
while(dif<0.2)
{
delay(9000);
time (&end);
dif = difftime (end,start);
}

if(kbhit()){a=getch(); if(a==' '){bExit_flag1 = 0x01; break;}}
}
/*.........發送TCP斷開命令.....................................*/
for(i=0;i<3;i++)
CDMA_CommandSend(CDMA_COMMAND_8,strlen(CDMA_COMMAND_8));
/*.........發送PPP斷開命令......................................*/
for(i=0;i<3;i++)
CDMA_CommandSend(CDMA_COMMAND_9,strlen(CDMA_COMMAND_9));

bExit_flag1 = 0x01;
}

/*.................................................................*/

}
CloseCom(); /*關閉埠1*/
printf("Bye~.\n");
}

熱點內容
如何將客戶端的文件傳到伺服器 發布:2024-11-14 02:27:27 瀏覽:121
linux命令修改ip 發布:2024-11-14 02:26:36 瀏覽:62
南方怎麼存儲干玉米 發布:2024-11-14 02:25:12 瀏覽:772
程序c怎麼編譯 發布:2024-11-14 02:25:09 瀏覽:145
死亡之種2甜蜜之家要什麼配置 發布:2024-11-14 02:14:02 瀏覽:884
172純凈伺服器地址 發布:2024-11-14 02:14:01 瀏覽:13
1900能用什麼配置 發布:2024-11-14 02:13:54 瀏覽:153
c語言數組定義初始化 發布:2024-11-14 02:08:21 瀏覽:342
golang編譯依賴glibc 發布:2024-11-14 02:08:10 瀏覽:871
凱立德導航工廠6位密碼是多少 發布:2024-11-14 01:42:02 瀏覽:161