C語言給串列埠傳送資料

2021-09-29 19:05:35 字數 2824 閱讀 7023

#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 為了避免在接收處...