当前位置: 首页 > news >正文

网站建设现状 数据长沙点梦网站建设

网站建设现状 数据,长沙点梦网站建设,深圳网络营销怎么推广,做一个网站完整的网页首先#xff0c;回顾一下串口的核心知识点#xff0c;也是面试重点#xff1a; 串口通信通常使用在多机通讯中串口通信是全双工的决定串口通信的成功与否的是 数据格式 和 波特率数据格式#xff1a;1. 数据位 2.停止位 3. 奇偶校验位 树莓派恢复串口 回忆前几节树莓派刷机… 首先回顾一下串口的核心知识点也是面试重点 串口通信通常使用在多机通讯中串口通信是全双工的决定串口通信的成功与否的是 数据格式 和 波特率数据格式1. 数据位 2.停止位 3. 奇偶校验位 树莓派恢复串口 回忆前几节树莓派刷机的开端为了能通过串口连接到树莓派事先将串口设置为了系统交互的方式这会导致无法进行正常的串口的开发况且现在已经成功可以使用SSH登录所以可以将串口设置回来了 修改 /boot/cmdline.txt 1. sudo vi /boot/cmdline.txt 2. 将“consoleserial,115200”删除 sudo reboot重启  设置完成 树莓派的串口开发 再打开串口后由于都是基于wiringPi库所以串口开发和香橙派的也是一样一样的这里我直接把在香橙派写好的串口开发文件上传过来然后直接开始写 注意树莓派的串口驱动文件是/dev/下的ttyAMA0 mjm_uart_tool.c #include stdio.h #include stdlib.h #include stdint.h #include stdarg.h #include string.h #include termios.h #include unistd.h #include fcntl.h #include sys/ioctl.h #include sys/types.h #include sys/stat.h #include wiringSerial.hint myserialOpen (const char *device, const int baud) {struct termios options ;speed_t myBaud ;int status, fd ;switch (baud){case 9600: myBaud B9600 ; break ;case 115200: myBaud B115200 ; break ;}if ((fd open (device, O_RDWR | O_NOCTTY | O_NDELAY | O_NONBLOCK)) -1)return -1 ;fcntl (fd, F_SETFL, O_RDWR) ;// Get and modify current options:tcgetattr (fd, options) ;cfmakeraw (options) ;cfsetispeed (options, myBaud) ;cfsetospeed (options, myBaud) ;options.c_cflag | (CLOCAL | CREAD) ;options.c_cflag ~PARENB ;options.c_cflag ~CSTOPB ;options.c_cflag ~CSIZE ;options.c_cflag | CS8 ;options.c_lflag ~(ICANON | ECHO | ECHOE | ISIG) ;options.c_oflag ~OPOST ;options.c_cc [VMIN] 0 ;options.c_cc [VTIME] 100 ; // Ten seconds (100 deciseconds)tcsetattr (fd, TCSANOW, options) ;ioctl (fd, TIOCMGET, status);status | TIOCM_DTR ;status | TIOCM_RTS ;ioctl (fd, TIOCMSET, status);usleep (10000) ; // 10mSreturn fd ; }void serialSendstring (const int fd, const char *s) {int ret;ret write (fd, s, strlen (s));if (ret 0)printf(Serial Puts Error\n); }int serialGetstring (const int fd, char *buffer) {int n_read;n_read read(fd, buffer,32);return n_read; }int serialDataAvail (const int fd) {int result ;if (ioctl (fd, FIONREAD, result) -1)return -1 ;return result ; }mjm_uart_tool.h int myserialOpen (const char *device, const int baud); void serialSendstring (const int fd, const char *s); int serialGetstring (const int fd, char *buffer); int serialDataAvail (const int fd); serial_mjm_test.c #include stdio.h #include stdlib.h #include stdint.h #include stdarg.h #include string.h #include termios.h #include unistd.h #include fcntl.h #include sys/ioctl.h #include sys/types.h #include sys/stat.h #include unistd.h #include pthread.h #include errno.h #include mjm_uart_tool.hvoid *write_serial(void *arg) {char *sendbuf;sendbuf (char *)malloc(32*sizeof(char));while(1){memset(sendbuf,\0,32*sizeof(char));fgets(sendbuf,sizeof(sendbuf),stdin);serialSendstring (*((int *)arg), sendbuf) ;}pthread_exit(NULL);}void *read_serial(void *arg) {char readbuf[32] {\0};while(1){while(serialDataAvail (*((int *)arg))){serialGetstring (*((int *)arg),readbuf) ;printf(- %s\n,readbuf);memset(readbuf,\0,32);}}pthread_exit(NULL); }int main () {int fd ;int ret;pthread_t read_thread;pthread_t write_thread;if ((fd myserialOpen (/dev/ttyAMA0, 115200)) 0) //打开驱动文件配置波特率{fprintf (stderr, Unable to open serial device: %s\n, strerror (errno)) ;return 1 ;}/* if (wiringPiSetup () -1){fprintf (stdout, Unable to start wiringPi: %s\n, strerror (errno)) ;return 1 ;}*/ret pthread_create(read_thread,NULL,read_serial,(void *)fd);if(ret ! 0){printf(read_serial create error\n);return 1;}ret pthread_create(write_thread,NULL,write_serial,(void *)fd);if(ret ! 0){printf(write_serial create error\n);return 1;}pthread_join(read_thread,NULL);pthread_join(write_thread,NULL);return 0 ; }编译 由于此处实现的串口函数是我参考wiringPi库自己实现的所以无需链wiringPi库只需链线程库就ok gcc serial_mjm_test.c mjm_uart_tool.c -lpthread 运行效果 可见轻松的实现了通讯效果 封装动态库  由于这里使用的是我自己封装的串口函数所以可以根据上上节的知识将它封装成动态库 详见我之前的博文 使用树莓派学习Linux系统编程的 --- 库编程面试重点-CSDN博客 生成动态库命名为“mjmserial gcc -shared -fpic mjm_uart_tool.c -o libmjmserial.so编译main函数所在C文件链库将可执行文件命名为“serialtest” gcc serial_mjm_test.c -L ./ -lmjmserial -lpthread -o serialtest 此时可以使用环境变量的方法指定动态库搜索路径或者直接复制动态库到/usr/lib下由于后者上节实现过了这次尝试前者 写一个脚本 1. vi serialtest.sh 2. 内容为“ export LD_LIBRARY_PATH/home/pi/mjm_code/./serialtest” 3. chmod x serialtest.sh 最后直接执行“ ./serialtest.sh ”: 可见运行成功 此时我只需要提供动态库的.so文件和.h文件给别人别人就可以调用我封装好的串口函数了并且别人无法看到我封装函数的具体实现。
http://www.w-s-a.com/news/580091/

相关文章:

  • 萧山做网站的企业网站建设 西安
  • 江西省城乡建设厅网站百度站长资源平台
  • 本地搭建linux服务器做网站免费查企业信息查询
  • 电商网站建设与运营网上购物哪个网站最好
  • 做app做网站从何学起网站设计需要什么证
  • 设计网站最重要的是要有良好的短网址还原
  • 大连建设银行招聘网站做seo是要先有网站吗
  • 中山做网站的wordpress建站教程百科
  • 湛江专业网站制作做网站需要工具
  • 做音箱木工网站吉林平安建设网站
  • 品牌网站建设咨询灯光设计网站推荐
  • 温州网站运营打开百度一下网页版
  • 网站有情链接怎么做住房公积金个体工商户
  • 内蒙古网站开发网站开发验收资料
  • 温州网站建设首选国鼎网络网络营销方法可分为两类
  • 做张家界旅游网站多少钱企业推广网络营销
  • 代做毕设网站推荐广东手机微信网站制作
  • 福州建设工程质量监督网站专业做公司宣传网站的
  • 百度云建站教程网站工程师是做什么的
  • 手机在线制作网站一级消防工程师考试试题及答案
  • 网站设计的需求网页制作教程和素材
  • 徐州网站建设 网站推广WordPress 文章编辑
  • 做什么网站比较受欢迎软件商店下载安装2023版本最新
  • 做ip资讯的网站怎么在wordpress中套用同行网页
  • 医院网站如何备案东莞优化公司收费
  • 罗村网站开发适合ps做图的素材网站有哪些
  • 网站建设中 油财宝企业网址怎么整
  • asp.net空网站php网站开发要学什么
  • 做可视化的网站微信网站模版下载
  • 包头移动的网站建设茂名建站价格