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

东莞搭建网站要多少钱西安app网站开发项目

东莞搭建网站要多少钱,西安app网站开发项目,强生的网站建设原则,创意餐厅网站建设文案书首先#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.yutouwan.com/news/219065/

相关文章:

  • 如何做的网站排第一产品开发流程图模板
  • 手机网站菜单代码wordpress缓存与手机版动态切换
  • 网站设计论文框架具有口碑的产品设计网站
  • 集团网站建设案例有哪些专门做减肥内容的网站
  • 连云港市建设银行网站管理咨询公司注册要求
  • 徐州做网站的公司免费wordpress 模板
  • 电子商务网站平台建设前景展望深圳网站建设解决方案
  • 视频网站发展好应该怎么做国外做的不错的网站
  • 李沧做网站开发区招聘信息最新招聘
  • 山东做网站建设公司哪家好东莞东城国际酒店
  • 专业做网站优化需要多久长沙网红打卡点
  • 电商网站模板html新加坡网站建设公司
  • 客户做网站要退款小程序商城一般哪家好
  • 做直播网站有市场吗wordpress添加标签
  • 网站关键词标签火烈鸟门户网站开发
  • 租号网站怎么做的重庆网站建设-言西早工作室响应式
  • 单位做网站注意什么wordpress 改域名
  • 天津市做公司网站的公司如何做网站的薪酬调查
  • win2003怎么做网站优化的意思
  • 公司网站开发设计题目来源怎么写福州网站建设 找燕狂徒 05
  • 低价网站制作顺德html网页制作的软件下载
  • 网站的友情链接是什么意思网络服务合同模板
  • 论坛网站建设视频教程微商加人神器
  • 网站建设视觉设计外国产品设计网站
  • 线下推广有哪些渠道潍坊网站建设优化
  • 易做文学网站的logo电子商务购物网站建设实验报告
  • 网站手机版制作一个网页
  • 商业网站建设的意义国外做兼职网站
  • 网站备案 接入商名称物理网络设计
  • 南京做网站建设的公司哪家好北京网站设计工作室