#include"haeundae.h"
static int convbaud(unsigned long int baudrate)
}static int portset(int fdcom, const pportinfo_t pportinfo)
break;
case '1':
break;
case '2':
break;
}//控制模式,data bits
termios_new.c_cflag &= ~csize; //控制模式,遮蔽字元大小位
databit = pportinfo->databit;
switch (databit)
//控制模式 parity check
parity = pportinfo->parity;
switch (parity)
break;
case '1':
break;
case '2':
break;
}//控制模式,stop bits
stopbit = pportinfo->stopbit;
if (stopbit == '2')
else
// other attributions default
termios_new.c_oflag &= ~opost; //輸出模式,原始資料輸出
termios_new.c_cc[vmin] = 1; //控制字元, 所要讀取字元的最小數量
termios_new.c_cc[vtime] = 1; //控制字元, 讀取第乙個字元的等待時間 unit: (1/10)second
tcflush(fdcom, tciflush); //溢位的資料可以接收,但不讀
tmp = tcsetattr(fdcom, tcsanow, &termios_new); //設定新屬性,tcsanow:所有改變立即生效 tcgetattr(fdcom, &termios_old);
return (tmp);
}int haeundaecontrol(const char *usbname,const char *control_order, int order_len)
; // check power
char openbuf[8] = ; // open power
char closebuf[8] = ; // close power
char recvbuf[16] = ;
struct timeval tv;
fd_set set, rset;
fd_zero(&set);
portinfo_t portinfo = ;
char rusbname[24] = ;
sprintf(rusbname, "/dev/%s", usbname);
ufd = open(rusbname, o_rdwr | o_noctty);
if (ufd < 0)
portset(ufd, &portinfo);
write(ufd,control_order,order_len);
/* fd_set(ufd, &set);
close:
write(ufd, closebuf, 5);
sleep(1);
write(ufd, checkbuf, 5);
memset(recvbuf, 0, 16);
*/ /* rset = set;
tv.tv_sec = 5;
tv.tv_usec = 0;
ret = select(ufd + 1, &rset, null, null, &tv);
if (ret == 0)
read(ufd, recvbuf, 16);
status = recvbuf[3];
if (status == 0xff) // power closed
read(ufd, recvbuf, 16);
status = recvbuf[3];
if (status == 0x00) // power opened
else if (status == 0xff)
else
}else if (status == 0x00)
else
*/}
.h:
#ifndef _haeundae_h_
#define _haeundae_h_
#include #include #include #include #include #include #include #include //termios, tcgetattr(), tcsetattr()
#include #include typedef struct
portinfo_t;
typedef portinfo_t *pportinfo_t;
int haeundaecontrol(const char *usbname,const char *control_order, int order_len);
#endif
main:
#include "haeundae.h"
int main()
; haeundaecontrol("ttyusb0",order,7);
}
串列埠傳送資料
s 串列埠程式設計 詳解4 串列埠傳送資料 串列埠傳送資料報括 十六進製制傳送資料 手動傳送資料 自動傳送資料 手動傳送資料的 如下 cpp view plain copy 手動傳送 long tx count 0 void cscommdlg onbuttonmanualsend else els...
C 給串列埠裝置傳送脈衝指令。DTR和RTS指令
之前,硬體工程師和我說 你給我發個脈衝指令,我觸發一下。我 黑人問號臉 脈衝指令是什麼 他 就是乙個點,給我觸發一下。我 乙個點?什麼點?你要告訴我發什麼指令內容過去啊 他 就是乙個點啊,觸發一下就好了。我 找了好幾天的資料,終於被我找到了,原來根本不是發什麼內容過去,而是更改串列埠的乙個值的屬性。...
C 串列埠除錯 傳送接收
串列埠接收 private long receive count 0 接收位元組計數 public static serialport serialport1 newserialport public static stringbuilder sb newstringbuilder 為了避免在接收處...