串列埠通訊實現

2021-06-08 17:59:52 字數 1930 閱讀 3182

前段時間編寫了串列埠通訊的**用的是rs-232資料線;

#include /*標準輸入輸出定義*/

#include /*標準函式庫定義*/

#include /*unix 標準函式定義*/

#include #include #include #include #include #include #define dev "/dev/ttys1"

#define max_size 2048

int set_com_config(int fd,int baud_rate,int data_bits,char parity,int stop_bits)

//設定字元大小

new_cfg = old_cfg;

cfmakeraw(&new_cfg);//配置為原始模式

new_cfg.c_cflag&=~csize;

//設定波特率

switch(baud_rate)

case 4800:

case 9600:

case 19200:

case 38400:

case 115200:

default: break;

} cfsetispeed(&new_cfg,speed);

cfsetospeed(&new_cfg,speed);

//設定停止位

switch(data_bits)

default:

case 8:

}//設定奇偶校驗位

switch(parity)

case 'e':

case 'e':

case 's':

case 's':

default:

case 'n':

case 'n':

}//設定停止位

switch(stop_bits)

default:

case 1:

}//設定等待時間和最小接收字元

new_cfg.c_cc[vtime] =0;

new_cfg.c_cc[vmin] =1;

//處理未接收字元

tcflush(fd,tciflush);

//啟用新配置

if((tcsetattr(fd,tcsanow,&new_cfg))!=0)

return 0;

}//開啟串列埠函式

int open_port(int com_port)

; #else//使用usb轉串列埠

char*dev = ;

#endif

if((com_port<0)||(com_port > max_com_num))

//開啟串列埠

if((fd=open(dev[com_port-1],o_rdwr|o_noctty|o_ndelay))<0)

//恢復串列埠為堵塞狀態

if(fcntl(fd,f_setfl,0) <0 )

//測試是否為終端裝置

if(isatty(stdin_fileno)==0)

return fd;

}int main(int argc,char*argv)

printf("open sucess!\n");

if((set_com_config(fd,9600,8,'n',1))<0)

printf("set sucess!\n");

real_read=read(fd,buffer,sizeof(buffer));

if(real_read<0)

printf("start read...\n");

printf("....%s..\n",buffer);

close(fd);

return 0;

}

VC 串列埠通訊實現方式

利用師姐qt2440開發板控制機械臂,串列埠通訊出現問題,找到usb轉串列埠後,任然找不到相應的驅動。初步打算用微控制器實現。1.基於active控制項的方式 mscomm 優點是 直接利用控制項,在串列埠有資料到達時,會促發相應的事件響應函式,然後你可以在實踐響應函式裡,進行資料的讀取。缺點是 資...

串列埠通訊實驗

晶振12mhz,波特率1200,程式啟動後微控制器主動發出hello server,pc使用串列埠助手應答微控制器,當微控制器收到pc發來的資料aah後,將30h 3fh的16個位元組傳送給pc,當51收到e0h時就發40h 5fh的32個位元組資料,若微控制器收到其他資料後,則不做任何修改返回pc...

串列埠通訊實戰

start.s 檔名 start.s 描述 演示串列埠通訊 define wtcon 0xe2700000 define svc stack 0xd0037d80.global start 把 start鏈結屬性改為外部,這樣其他檔案就可以看見 start了 start 第1步 關看門狗 向wtco...