- 论坛徽章:
- 0
|
串口不能接收到数据,在发送则有回显现像,望赐教!
#include <stdio.h>; /*鏍囧噯杈撳叆杈撳嚭瀹氫箟*/
#include <stdlib.h>; /*鏍囧噯鍑芥暟搴撳畾涔?/
#include <unistd.h>; /*Unix鏍囧噯鍑芥暟瀹氫箟*/
#include <sys/types.h>; /**/
#include <sys/stat.h>; /**/
#include <fcntl.h>; /*鏂囦欢鎺у埗瀹氫箟*/
#include <termios.h>; /*PPSIX缁堢?鎺у埗瀹氫箟*/
#include <errno.h>; /*閿欒?鍙峰畾涔?/
#define FALSE 0
#define TRUE 1
/***@brief 璁剧疆涓插彛閫氫俊閫熺巼
*@param fd 绫诲瀷 int 鎵撳紑涓插彛鐨勬枃浠跺彞鏌?*@param speed 绫诲瀷 int 涓插彛閫熷害
*@return void*/
int speed_arr[] = { B38400, B19200, B9600, B4800, B2400, B1200, B300,
B38400, B19200, B9600, B4800, B2400, B1200, B300, };
int name_arr[] = {38400, 19200, 9600, 4800, 2400, 1200, 300,
38400, 19200, 9600, 4800, 2400, 1200, 300, };
void set_speed(int fd, int speed)
{
int i;
int status;
struct termios Opt;
tcgetattr(fd, &Opt);
for ( i= 0; i < sizeof(speed_arr) / sizeof(int); i++)
{
if (speed == name_arr)
{
tcflush(fd, TCIOFLUSH);
cfsetispeed(&Opt, speed_arr);
cfsetospeed(&Opt, speed_arr);
status = tcsetattr(fd, TCSANOW, &Opt);
if (status != 0)
perror("tcsetattr fd1"
return;
}
tcflush(fd,TCIOFLUSH);
}
}
/**
*@brief 璁剧疆涓插彛鏁版嵁浣嶏紝鍋滄?浣嶅拰鏁堥獙浣?*@param fd 绫诲瀷 int 鎵撳紑鐨勪覆鍙f枃浠跺彞鏌?
*@param databits 绫诲瀷 int 鏁版嵁浣? 鍙栧 |
|