c語言讀取串口-九游会j9娱乐平台
⑴ 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
#include
#include
#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
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
/*..........等待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
if(count>10)
{
for(l=0;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
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
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
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");
}