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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mbdialer.c

?? modbus linux libiary!
?? C
字號:
#include <modbus.h>#include <signal.h>#include <ctype.h>int Mb_device;				/* device tu use */int Mbm_Pid_Child;		/* PID child used to read the slave answer */int Mbm_Pid_Sleep;		/* PID use to wait the end of the timeout */byte *Mbm_result;			/* byte readed on the serial port : answer of the slave *//************************************************************************************		Mbd_get_data : thread reading data on the serial port*************************************************************************************input :-------len	:	number of data to read;no output************************************************************************************/void Mbd_get_data(int *len ){   int i;   byte read_data;   Mbm_Pid_Child=getpid();   if (Mb_verbose)      fprintf(stderr,"starting receiving data, total length : %d \n",*len);   do {      read(Mb_device,&read_data,1);   } while (iscntrl(read_data));   for(i=0;i<(*len);i++)   {      if(iscntrl(read_data))         break;      /* store data to the slave answer packet */      Mbm_result[i]=toupper(read_data);            /* call the pointer function if exist */      if(Mb_ptr_rcv_data!=NULL)         (*Mb_ptr_rcv_data)(read_data);      if (Mb_verbose)         fprintf(stderr,"receiving byte :0x%x %d (%d)\n",read_data,read_data,Mbm_result[i]);      /* read data */      read(Mb_device,&read_data,1);   }   Mbm_result[i]='\0';   if (Mb_verbose)      fprintf(stderr,"receiving data done\n");   Mbm_Pid_Child=0;}/************************************************************************************		Mbd_import : read data on the serial port*************************************************************************************input :-------port	:	port to readstring	:	string to store datalen	:	max lenght to readtimeout	:	timeoutoutput0 	: success-1	: timeout************************************************************************************/int Mbd_import(int port, char *string, int len, int timeout){   int i;   byte read_data;   time_t t;                                                                                                                                 t = (time(NULL) + timeout);   if (Mb_verbose)      fprintf(stderr,"starting receiving data, total length : %d \n",len);   do {      while(read(Mb_device,&read_data,1) == 0){         if(t < time(NULL))            return(-1);//         printf("t =  %d \t clock = %d\n", t, time(NULL));      }   } while (iscntrl(read_data));   for(i=0;i<(len);i++)   {      if(iscntrl(read_data))         break;      if(t < time(NULL))         return(-1);// printf("t =  %d \t clock = %d\n", t, time(NULL));      /* store data to the slave answer packet */      string[i]=toupper(read_data);            if (Mb_verbose)         fprintf(stderr,"receiving byte :0x%x %d (%d)\n",read_data,read_data,string[i]);      /* read data */      while(read(Mb_device,&read_data,1) == 0){         if(t < time(NULL))            return(-1);//         printf("t =  %d \t clock = %d\n", t, time(NULL));      }   }   string[i]='\0';   if (Mb_verbose)      fprintf(stderr,"receiving data done\n");   return(0);}/************************************************************************************		Mbd_matches : match data on the serial port*************************************************************************************input :-------port		:	port to readmatString	:	string to matchmatTime		:	timeoutoutput0 	: success-1	: timeout************************************************************************************/int Mbd_matchs (int port, char *matString, int matTime){                                                                                                                                 char modemRes[64];   int result;   Mb_tio.c_cc[VMIN]=0;   Mb_tio.c_cc[VTIME]=1;   if (tcsetattr(port,TCSANOW,&Mb_tio) <0) {      perror("Can't set terminal parameters ");      return -1 ;   }   result = -1;                                                                                                                                 while(Mbd_import(port, modemRes, 64, matTime) == 0){      if (Mb_verbose)         fprintf(stderr, "%s\n", modemRes);      if(strstr(modemRes, matString)){         result = 0;         break;      }   }   Mb_tio.c_cc[VMIN]=1;   Mb_tio.c_cc[VTIME]=0;   if (tcsetattr(port,TCSANOW,&Mb_tio) <0) {      perror("Can't set terminal parameters ");      return -1 ;   }   return(result);}/************************************************************************************		Mbd_sleep : thread wait timeout*************************************************************************************input :-------timeout : duduration of the timeout in msno output************************************************************************************/void Mbd_sleep(int *timeout){   Mbm_Pid_Sleep=getpid();	if (Mb_verbose)      fprintf(stderr,"\n sleeping %d ms\n",*timeout);   usleep(*timeout*1000);   if (Mb_verbose)      fprintf(stderr,"\n !!!!! Done Sleeping %d ms !!!!!!\n",*timeout);   Mbm_Pid_Sleep=0;}/************************************************************************************		Mbd_export : send data*************************************************************************************input :-------port      : port to usetrame     : packet to sendtimeout   : duduration of the timeout in mslong_emit : length of the packet to sendanswer :--------0         : write ok-1        : failure************************************************************************************/int Mbd_export(int port, byte trame[], int timeout, int long_emit){   int i;   /* clean port */   tcflush(port, TCIFLUSH);   if (Mb_verbose)      fprintf(stderr,"start writing \n");   for(i=0;i<long_emit;i++)   {      /* send data */      if(write(port,&trame[i],1) != 1)         return(-1);   }  if (Mb_verbose)      fprintf(stderr,"write ok\n");  return(0);}/************************************************************************************		Mbd_send_and_get_result : send data, and wait the answer of the modem*************************************************************************************input :-------trame     : packet to sendtimeout   : duduration of the timeout in mslong_emit : length of the packet to sendlongueur  : length of the packet to readanswer :--------0         : timeout failure1         : answer ok************************************************************************************/int Mbd_send_and_get_result(byte trame[], int timeout, int long_emit, int longueur){   int i,stat1=-1,stat2=-1;   pthread_t thread1,thread2;   Mbm_result = (unsigned char *) malloc(longueur*sizeof(unsigned char));   /* clean port */   tcflush(Mb_device, TCIFLUSH);   /* create 2 threads for read data and to wait end of timeout*/   pthread_create(&thread2, NULL,(void*)&Mbd_sleep,&timeout);   pthread_create(&thread1, NULL,(void*)&Mbd_get_data,&longueur);   if (Mb_verbose)      fprintf(stderr,"start writing \n");   for(i=0;i<long_emit;i++)   {      /* send data */      write(Mb_device,&trame[i],1);      /* call pointer function if exist */      if(Mb_ptr_snd_data!=NULL)         (*Mb_ptr_snd_data)(trame[i]);   }  if (Mb_verbose)      fprintf(stderr,"write ok\n");   do {      if (Mbm_Pid_Child!=0)         /* kill return 0 if the pid is running or -1 if the pid don't exist */         stat1=0;      else         stat1=-1;      if (Mbm_Pid_Sleep!=0)         stat2=0;      else         stat2=-1;//printf("PID_Child = %d \tPID_Sleep = %d \tstat1 = %d \tstat2 = %d\n", Mbm_Pid_Child, Mbm_Pid_Sleep, stat1, stat2);      /* answer of the slave terminate or and of the timeout */      if (stat1==-1 || stat2==-1)          break;      usleep(timeout);   } while(1);    if (Mb_verbose)   {      fprintf(stderr,"pid reading %d return %d\n",Mbm_Pid_Child,stat1);      fprintf(stderr,"pid timeout %d return %d\n",Mbm_Pid_Sleep,stat2);   }   /* stop both childs */   Mbm_Pid_Child=0;   Mbm_Pid_Sleep=0;   pthread_cancel(thread1);   pthread_cancel(thread2);   /* error : timeout fealure */   if (stat1==0)   {      return 0;   }   /* ok : store the answer packet in the data trame */   for (i=0;i<=longueur;i++)      trame[i]=Mbm_result[i];   return 1;}      /************************************************************************************   				Mbd_dial : Dial a phone number and wait for connect*************************************************************************************input :-------phonenumber	  : Phone Number of the slavetimeout	          : timeout duration in ms*************************************************************************************answer :--------0 : OK Connected-1 : No DialTone-2 : Busy-3 : No Answer-4 : No Carrier-5 : Timeout*************************************************************************************/int Mbd_dial(int device, char *phonenumber, int timeout){   byte trame[256];   Mb_ptr_snd_data=0;   Mb_ptr_rcv_data=0;   Mb_device = device;   sprintf(trame, "ATDT %s\r", phonenumber);   Mbd_send_and_get_result(trame, timeout, strlen(trame), 256);   if (Mb_verbose)      fprintf(stderr,"trame = %s\n",trame);   if(strstr(trame, "NO DIALTONE"))      return(-1);   if(strstr(trame, "BUSY"))      return(-2);   if(strstr(trame, "NO ANSWER"))      return(-3);   if(strstr(trame, "NO CARRIER"))      return(-4);   if(strstr(trame, "CONNECT"))      return(0);   return(-5);}/************************************************************************************			Mbd_setup : send the modem a setup string and get response*************************************************************************************input :-------setup 		  : Modem Setup stringtimeout	          : timeout duration in ms*************************************************************************************answer :--------0 : OK setup-1 : Timeout-2 : Error*************************************************************************************/int Mbd_setup(int device, char *setup, int timeout){   byte trame[256];   Mb_ptr_snd_data=0;   Mb_ptr_rcv_data=0;   Mb_device = device;   sprintf(trame, "%s\r", setup);   if(Mbd_export(device, trame, timeout, strlen(trame)) < 0)      return(-2);      return(Mbd_matchs (device, "OK", timeout));}/************************************************************************************			Mbd_hangup : hangup the modem*************************************************************************************input :-------device		  : devicetimeout	          : timeout duration in ms*************************************************************************************answer :--------0 : OK hangup-1 : Timeout-2 : Error*************************************************************************************/int Mbd_hangup(int device, int timeout){   byte trame[256];   Mb_ptr_snd_data=0;   Mb_ptr_rcv_data=0;   Mb_device = device;   sprintf(trame, "+++");   if(Mbd_export(device, trame, timeout, strlen(trame)) < 0)      return(-2);   Mbd_matchs (device, "OK", timeout);   sprintf(trame, "ath\r");   if(Mbd_export(device, trame, timeout, strlen(trame)) < 0)      return(-2);      return(Mbd_matchs (device, "OK", timeout));}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩欧美综合一区| 一区二区久久久久| 91福利资源站| 国产精品资源在线| 亚洲资源在线观看| 国产精品网站在线播放| 日韩免费电影网站| 欧美日韩精品欧美日韩精品一 | 欧美—级在线免费片| 欧美一卡2卡三卡4卡5免费| 91丨porny丨户外露出| 国产毛片一区二区| 日韩精品电影一区亚洲| 亚洲毛片av在线| 中文字幕一区二区三区精华液 | 国产精品久久久久久久久果冻传媒 | 亚洲五码中文字幕| 国产精品美女久久福利网站| 精品欧美久久久| 91精品国产综合久久精品| 一本大道综合伊人精品热热| av午夜一区麻豆| 国产东北露脸精品视频| 国产在线视频一区二区三区| 男女男精品网站| 五月婷婷另类国产| 一区二区三区日韩精品视频| 亚洲九九爱视频| 日韩一区日韩二区| 国产精品福利在线播放| 欧美国产成人在线| 国产亚洲va综合人人澡精品| 精品少妇一区二区三区日产乱码| 欧美精品在线视频| 欧美日韩美少妇| 欧美色网一区二区| 91在线视频在线| 91视频免费观看| 色综合av在线| 欧美亚洲自拍偷拍| 欧美日韩国产一级| 91精品麻豆日日躁夜夜躁| 在线不卡一区二区| 欧美精品在线观看播放| 日韩欧美综合在线| 日韩精品一区二区三区老鸭窝| 日韩三级免费观看| 亚洲乱码国产乱码精品精的特点| 亚洲特级片在线| 亚洲精品网站在线观看| 亚洲自拍另类综合| 日韩国产精品大片| 国产一区二区三区精品视频| 国产成人鲁色资源国产91色综 | 色老汉av一区二区三区| 欧美三级电影在线观看| 7777精品伊人久久久大香线蕉 | 91久久奴性调教| 欧美日韩国产欧美日美国产精品| 欧美电影一区二区三区| 精品久久久久av影院| 国产欧美日韩综合| 一区二区三区不卡视频| 青青草成人在线观看| 国产自产2019最新不卡| 99久久99久久精品国产片果冻| 91精彩视频在线观看| 欧美一区二区视频在线观看| 国产亚洲综合色| 亚洲麻豆国产自偷在线| 婷婷激情综合网| 国产成人丝袜美腿| 色综合久久中文综合久久97| 欧美一级xxx| 成人免费在线观看入口| 日本成人中文字幕在线视频| 国产91精品久久久久久久网曝门| 91久久线看在观草草青青| 日韩视频免费直播| 亚洲视频在线观看一区| 日韩激情一区二区| 成人蜜臀av电影| 91精品国产乱码久久蜜臀| 国产日韩av一区二区| 亚洲国产一区二区视频| 国产精品一区二区三区网站| 91福利国产精品| 久久久久免费观看| 视频一区视频二区中文字幕| 不卡的av电影| 精品久久99ma| 亚洲五月六月丁香激情| 成人小视频免费在线观看| 欧美一区二区精品在线| 亚洲你懂的在线视频| 国内精品视频666| 精品视频1区2区| 亚洲日本一区二区| 国产老妇另类xxxxx| 亚洲视频在线观看三级| 精品一区二区三区的国产在线播放| 91免费小视频| 国产欧美日韩不卡| 久久电影网电视剧免费观看| 欧美综合在线视频| 国产精品夫妻自拍| 国产一区二区不卡老阿姨| 欧美日韩精品福利| 亚洲欧美另类在线| 国产91丝袜在线播放九色| 日韩一卡二卡三卡四卡| 亚洲自拍偷拍图区| 成人黄色在线网站| 久久精品亚洲精品国产欧美kt∨| 日本91福利区| 欧美日韩美女一区二区| 亚洲精选一二三| 成人app网站| 日本一区二区三区国色天香| 国产一区二区伦理| 精品国产乱码久久久久久久久| 日韩高清不卡在线| 欧美精品高清视频| 亚洲一区二区视频在线| 色欧美片视频在线观看在线视频| 欧美国产综合色视频| 国产精品一二三四区| 欧美tk—视频vk| 久久66热偷产精品| 欧美岛国在线观看| 美女国产一区二区三区| 日韩一区二区三区免费观看| 日本不卡高清视频| 欧美tk丨vk视频| 国产一区二三区好的| 久久久久国产免费免费| 国产精品1区2区| 国产欧美一区二区精品性色| 国产不卡视频一区二区三区| 亚洲国产成人在线| 99re亚洲国产精品| 一区二区三区四区在线免费观看| 色婷婷久久一区二区三区麻豆| 亚洲在线成人精品| 欧美日韩激情一区二区| 日韩国产高清在线| 精品国产免费久久| 粉嫩一区二区三区性色av| 国产精品进线69影院| 91性感美女视频| 亚洲v精品v日韩v欧美v专区| 日韩视频在线你懂得| 国内精品久久久久影院色| 国产精品女同互慰在线看| 一本久久a久久精品亚洲| 香蕉成人伊视频在线观看| 日韩一区二区中文字幕| 国产精品亚洲一区二区三区妖精| 国产精品网站在线观看| 欧美视频一区二| 麻豆高清免费国产一区| 国产亚洲一区字幕| 91亚洲男人天堂| 日本成人在线电影网| 国产亚洲视频系列| 91久久人澡人人添人人爽欧美| 日韩国产精品久久| 欧美韩日一区二区三区四区| 欧美中文字幕一区| 国产一区二区电影| 一区二区三区日本| 久久综合久久综合九色| 色综合夜色一区| 免费在线观看成人| 综合色天天鬼久久鬼色| 欧美一区在线视频| 成熟亚洲日本毛茸茸凸凹| 亚洲成人tv网| 国产精品麻豆网站| 日韩一区二区三区视频| 97成人超碰视| 国产综合色精品一区二区三区| 一区二区三区在线免费视频| xfplay精品久久| 欧美日韩三级视频| 成人久久久精品乱码一区二区三区 | 日本一区二区免费在线观看视频| 欧美日精品一区视频| 国产a精品视频| 奇米888四色在线精品| 亚洲色图清纯唯美| 2019国产精品| 欧美日韩性生活| 91女人视频在线观看| 国产精品一区二区三区99| 日日嗨av一区二区三区四区| 亚洲欧美日韩久久精品| 国产偷国产偷亚洲高清人白洁 | 在线观看免费一区| 国v精品久久久网|