9213|5

5

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

linux串口程序如何与我设计的人机界面结合 [复制链接]

linux串口程序如何与我设计的人机界面结合?
此帖出自Linux开发论坛

最新回复

connect( key1, SIGNAL( clicked() ), this, SLOT( key1_com() ) );     connect( key2, SIGNAL( clicked() ), this, SLOT( key2_com() ) );     connect( Slider1 , SIGNAL( sliderMoved(int) ), this, SLOT( key1_value(int) ) );     connect( Slider1 , SIGNAL( valueChanged(int) ), this, SLOT( key1_released(int) ) ); } //====================================================== void cato::key1_com() {     //int fd ,i;     unsigned char  buff[9] = {0xca,0x20,0xfe,0x2b,0x03,0x01,0x00,0x01,0xac};     //    fd = 3;     if( zu > 0 )     {         zu=zu-1;         Slider1->setValue(zu);     }     write( adc, &buff[0],9 ); } //====================================================== void cato::key2_com() {     //int fd ,i;     unsigned char  buff[9] = {0xca,0x20,0xfe,0x2b,0x03,0x01,0x01,0x01,0xac};     //      fd = 3;     if( zu < 64 )     {         zu=zu+1;         Slider1->setValue(zu);     }     write( adc, &buff[0],9 ); } //====================================================== void cato::key3_com() {    ; } //====================================================== void cato::key4_com() {    ; } //====================================================== void cato::key5_com() {    ; } //====================================================== void cato::key6_com() {    ; } //====================================================== void cato::key7_com() {    ; } //====================================================== void cato::key8_com() {    ; } //===================================================== void cato::key1_value(int i) {     //int fd ,i;     unsigned char  buff[8] = {0xca,0x20,0xfe,0x21,0x02,0x01,0x00,0xac};                                                                                     //      fd = 3;     zu = i;     i = 64 - i;     buff[6] = i;     write( adc, &buff[0],8 ); } //===================================================== void cato::key1_released(int i) {     //int fd ,i;     unsigned char  buff[8] = {0xca,0x20,0xfe,0x21,0x02,0x01,0x00,0xac};     //      fd = 3;     zu = i;     buff[6] = 64-i;     write( adc, &buff[0],8 ); } //====================================================== int cato::open_port( int fd, int comport) { //    char *dev[] = {"/dev/ttyS0", "/dev/ttyS1", "/dev/ttyS2"};     long vdisable ;     if( comport == 1 )     {         fd = open( "/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);         if( -1 == fd )         {             perror( "Can't open serial port");             return (-1);         }     }     else if( comport == 2 )     {         fd = open( "/dev/ttyS1", O_RDWR | O_NOCTTY | O_NDELAY);         if( -1 == fd )         {             perror( "Can't open serial port");             return (-1);         }     }     else if( comport == 3 )     {         fd = open( "/dev/ttyS2", O_RDWR | O_NOCTTY | O_NDELAY);         if( -1 == fd )         {             perror( "Can't open serial port");             return (-1);         }     }     /************************************************************************/     if( fcntl( fd, F_SETFL, 0 ) < 0)         printf( "fcntl failed!\n" );     else         printf( "fontl=%d\n", fcntl( fd, F_SETFL, 0));     /***********************************************************************/     if( isatty( STDIN_FILENO ) == 0)         printf( "standard input is not aterminal device\n");     else         printf( "isatty success!\n");     printf( "fd-open = %d\n", fd);        return fd; } /********************************************************************************** * *******************************************************************************/ int cato::set_opt(int fd, int nSpeed, int nBits, char nEvent, int nStop) {     struct termios newtio, oldtio;     if( tcgetattr(fd, &oldtio) != 0 )     {         perror("setupSerial 1");         return -1;     }     bzero( &newtio, sizeof(newtio) );     newtio.c_cflag |= CLOCAL | CREAD;     newtio.c_cflag &= ~CSIZE;     switch( nBits )     {         case 7:             newtio.c_cflag |= CS7;             break;         case 8:             newtio.c_cflag |= CS8;             break;     }     switch( nEvent )     {         case 'O':             newtio.c_cflag |= PARENB;             newtio.c_cflag |= PARODD;             newtio.c_cflag |= (INPCK | ISTRIP);             break;         case 'E':             newtio.c_cflag |= (INPCK | ISTRIP);             newtio.c_cflag |= PARENB;             newtio.c_cflag &= ~PARODD;             break;         case 'N':             newtio.c_cflag &= ~PARENB;             break;     }     /**************************************/     switch( nSpeed )     {         case 2400:             cfsetispeed( &newtio, B2400);             cfsetospeed( &newtio, B2400);             break;         case 4800:             cfsetispeed( &newtio, B4800);             cfsetospeed( &newtio, B4800);             break;         case 9600:             cfsetispeed( &newtio, B9600);             cfsetospeed( &newtio, B9600);             break;         case 115200:             cfsetispeed( &newtio, B115200);             cfsetospeed( &newtio, B115200);             break;         case 460800:             cfsetispeed( &newtio, B460800);             cfsetospeed( &newtio, B460800);             break;         default:             cfsetispeed( &newtio, B9600);             cfsetospeed( &newtio, B9600);             break;              }     if( nStop == 1)         newtio.c_cflag &= ~CSTOPB;     else if( nStop == 2 )         newtio.c_cflag |= CSTOPB;     newtio.c_cc[ VTIME ] = 0;     newtio.c_cc[ VMIN ] = 0;     tcflush( fd, TCIFLUSH );     if((tcsetattr(fd, TCSANOW, &newtio)) != 0)     {         perror("com set error");         return -1;     }     printf("set done!\n");     return 0; } int cato::init_com(void) {         int fd, i;         if( ( fd = cato::open_port( fd, 2)) < 0 )                                                                                          {                                                                                                  perror( "open_port error");                                                                                                  return 0 ;                                                                                          }                                                                                          if( ( i = cato::set_opt( fd, 9600, 8, 'N', 1 ) ) < 0 )                                                                                          {                                                                                                  perror( "set_opt error");                                                                                                  return 0 ;                                                                                          }                                                                                          printf( "fd = %d\n", fd );         return fd;      } /**************************************************************************************/ //====================================================== /*   *  Destroys the object and frees any allocated resources */ cato::~cato() {     // no need to delete child widgets, Qt does it all for us }  详情 回复 发表于 2007-8-16 15:04
点赞 关注

回复
举报

5

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

回复:linux串口程序如何与我设计的人机界面结合

最近正在开发一个linux下串口程序,环境ubuntu,我不明白串口程序如何与我设计的人机界面结合?直接在 qt designer中写串口程序(c语言)?好像没法编译!我不知道是我qt designe版本的问题还是什么原因?一编译就出错,说是找不到文件,明明那个文件在的. qt designer中没有串口通信的类.
此帖出自Linux开发论坛
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

回复:linux串口程序如何与我设计的人机界面结合

为啥没有理会呢??
此帖出自Linux开发论坛
 
 
 

回复

18

帖子

0

TA的资源

一粒金砂(初级)

4
 

回复: linux串口程序如何与我设计的人机界面结合

/**************************************************************************** ** Form interface generated from reading ui file 'cato.ui' ** ** Created: Mon Jun 4 09:37:06 2007 ** by: The User Interface Compiler (uic) ** ** WARNING! All changes made in this file will be lost! ****************************************************************************/ #ifndef CATO_H #define CATO_H #include <qvariant.h> #include <qwidget.h> class QVBoxLayout; class QHBoxLayout; class QGridLayout; class QPushButton; class QSlider; class cato : public QWidget { Q_OBJECT public: cato( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); int open_port( int fd, int comport); int set_opt(int fd, int nSpeed, int nBits, char nEvent, int nStop); int init_com(void); ~cato(); QSlider* Slider1; QSlider* Slider2; QSlider* Slider3; QPushButton* key1; QPushButton* key2; QPushButton* key3; QPushButton* key4; QPushButton* key5; QPushButton* key6; QPushButton* key7; QPushButton* key8; public slots: void key1_com(); void key2_com(); void key3_com(); void key4_com(); void key5_com(); void key6_com(); void key7_com(); void key8_com(); void key1_value(int i); void key1_released(int i); }; #endif // CATO_H
此帖出自Linux开发论坛
 
 
 

回复

18

帖子

0

TA的资源

一粒金砂(初级)

5
 

回复: linux串口程序如何与我设计的人机界面结合

connect( key1, SIGNAL( clicked() ), this, SLOT( key1_com() ) ); connect( key2, SIGNAL( clicked() ), this, SLOT( key2_com() ) ); connect( Slider1 , SIGNAL( sliderMoved(int) ), this, SLOT( key1_value(int) ) ); connect( Slider1 , SIGNAL( valueChanged(int) ), this, SLOT( key1_released(int) ) ); } //====================================================== void cato::key1_com() { //int fd ,i; unsigned char buff[9] = {0xca,0x20,0xfe,0x2b,0x03,0x01,0x00,0x01,0xac}; // fd = 3; if( zu > 0 ) { zu=zu-1; Slider1->setValue(zu); } write( adc, &buff[0],9 ); } //====================================================== void cato::key2_com() { //int fd ,i; unsigned char buff[9] = {0xca,0x20,0xfe,0x2b,0x03,0x01,0x01,0x01,0xac}; // fd = 3; if( zu < 64 ) { zu=zu+1; Slider1->setValue(zu); } write( adc, &buff[0],9 ); } //====================================================== void cato::key3_com() { ; } //====================================================== void cato::key4_com() { ; } //====================================================== void cato::key5_com() { ; } //====================================================== void cato::key6_com() { ; } //====================================================== void cato::key7_com() { ; } //====================================================== void cato::key8_com() { ; } //===================================================== void cato::key1_value(int i) { //int fd ,i; unsigned char buff[8] = {0xca,0x20,0xfe,0x21,0x02,0x01,0x00,0xac}; // fd = 3; zu = i; i = 64 - i; buff[6] = i; write( adc, &buff[0],8 ); } //===================================================== void cato::key1_released(int i) { //int fd ,i; unsigned char buff[8] = {0xca,0x20,0xfe,0x21,0x02,0x01,0x00,0xac}; // fd = 3; zu = i; buff[6] = 64-i; write( adc, &buff[0],8 ); } //====================================================== int cato::open_port( int fd, int comport) { // char *dev[] = {"/dev/ttyS0", "/dev/ttyS1", "/dev/ttyS2"}; long vdisable ; if( comport == 1 ) { fd = open( "/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY); if( -1 == fd ) { perror( "Can't open serial port"); return (-1); } } else if( comport == 2 ) { fd = open( "/dev/ttyS1", O_RDWR | O_NOCTTY | O_NDELAY); if( -1 == fd ) { perror( "Can't open serial port"); return (-1); } } else if( comport == 3 ) { fd = open( "/dev/ttyS2", O_RDWR | O_NOCTTY | O_NDELAY); if( -1 == fd ) { perror( "Can't open serial port"); return (-1); } } /************************************************************************/ if( fcntl( fd, F_SETFL, 0 ) < 0) printf( "fcntl failed!\n" ); else printf( "fontl=%d\n", fcntl( fd, F_SETFL, 0)); /***********************************************************************/ if( isatty( STDIN_FILENO ) == 0) printf( "standard input is not aterminal device\n"); else printf( "isatty success!\n"); printf( "fd-open = %d\n", fd); return fd; } /********************************************************************************** * *******************************************************************************/ int cato::set_opt(int fd, int nSpeed, int nBits, char nEvent, int nStop) { struct termios newtio, oldtio; if( tcgetattr(fd, &oldtio) != 0 ) { perror("setupSerial 1"); return -1; } bzero( &newtio, sizeof(newtio) ); newtio.c_cflag |= CLOCAL | CREAD; newtio.c_cflag &= ~CSIZE; switch( nBits ) { case 7: newtio.c_cflag |= CS7; break; case 8: newtio.c_cflag |= CS8; break; } switch( nEvent ) { case 'O': newtio.c_cflag |= PARENB; newtio.c_cflag |= PARODD; newtio.c_cflag |= (INPCK | ISTRIP); break; case 'E': newtio.c_cflag |= (INPCK | ISTRIP); newtio.c_cflag |= PARENB; newtio.c_cflag &= ~PARODD; break; case 'N': newtio.c_cflag &= ~PARENB; break; } /**************************************/ switch( nSpeed ) { case 2400: cfsetispeed( &newtio, B2400); cfsetospeed( &newtio, B2400); break; case 4800: cfsetispeed( &newtio, B4800); cfsetospeed( &newtio, B4800); break; case 9600: cfsetispeed( &newtio, B9600); cfsetospeed( &newtio, B9600); break; case 115200: cfsetispeed( &newtio, B115200); cfsetospeed( &newtio, B115200); break; case 460800: cfsetispeed( &newtio, B460800); cfsetospeed( &newtio, B460800); break; default: cfsetispeed( &newtio, B9600); cfsetospeed( &newtio, B9600); break; } if( nStop == 1) newtio.c_cflag &= ~CSTOPB; else if( nStop == 2 ) newtio.c_cflag |= CSTOPB; newtio.c_cc[ VTIME ] = 0; newtio.c_cc[ VMIN ] = 0; tcflush( fd, TCIFLUSH ); if((tcsetattr(fd, TCSANOW, &newtio)) != 0) { perror("com set error"); return -1; } printf("set done!\n"); return 0; } int cato::init_com(void) { int fd, i; if( ( fd = cato::open_port( fd, 2)) < 0 ) { perror( "open_port error"); return 0 ; } if( ( i = cato::set_opt( fd, 9600, 8, 'N', 1 ) ) < 0 ) { perror( "set_opt error"); return 0 ; } printf( "fd = %d\n", fd ); return fd; } /**************************************************************************************/ //====================================================== /* * Destroys the object and frees any allocated resources */ cato::~cato() { // no need to delete child widgets, Qt does it all for us }
此帖出自Linux开发论坛
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

6
 

回复: linux串口程序如何与我设计的人机界面结合

将linux下串口通信程序嵌入qt designer设计的界面,编译出了很多问题! 郁闷之至!我是将这些头文件直接包含在主界面窗口类的.h文件中的! #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> /*错误号定义*/ 谁能给个完整的 例子看看? 同情下初学者吧!!
此帖出自Linux开发论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 2/10 下一条
有奖直播 | TI 助力机器人电机控制系统设计
直播时间:2月27日(周四)上午10:00
活动奖励:家具壶、保温杯、充电线

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表