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

做图片推广的网站有哪些wordpress只显示文字

做图片推广的网站有哪些,wordpress只显示文字,中建八局一公司董事长,成都近期发生的大事一.什么是串口屏 串口屏#xff0c;可组态方式二次开发的智能串口控制显示屏#xff0c;是指带有串口通信的TFT彩色液晶屏显示控制模组。利用显示屏显示相关数据#xff0c;通过触摸屏、按键、鼠标等输入单元写入参数或者输入操作指令#xff0c;进而实现用户与机器进行信…一.什么是串口屏 串口屏可组态方式二次开发的智能串口控制显示屏是指带有串口通信的TFT彩色液晶屏显示控制模组。利用显示屏显示相关数据通过触摸屏、按键、鼠标等输入单元写入参数或者输入操作指令进而实现用户与机器进行信息交互。 主要特点  通讯方式简单线少: 串口屏只需通过几根线与主控器连接大大简化了硬件设计和布线复杂度。 多种尺寸和分辨率可选大屏: 从1英寸的小屏幕到20多英寸的大屏幕可以根据应用需求选择不同的尺寸和分辨率。 内置图形库和触控驱动能触摸: 串口屏通常内置了一些常用的图形库和触控驱动使得开发者无需编写复杂的显示和触控代码。 易于编程简单: 通过指令集或协议发送简单的命令即可实现丰富的显示效果如绘制图形、显示文本、切换页面等。 强大的功能扩展: 有些高级串口屏还支持播放视频、显示动态图表、联网功能等。 缺点 成本相对较高: 由于集成了更多功能价格相对较高。 依赖性强: 依赖屏幕厂商提供的协议和命令集灵活性较低。 二.串口屏驱动示例 这里是将串口作为一个serio总线设备利用linux内核提供serio总线驱动通过设置对应的串口调用serport提供的函数将串口当做serio总线设备在驱动里面需要按照serio总线设备驱动的框架来实现在内核源码drivers/input/touchscreen下提供了两个例子,touchright.c和touchit123.c可以参考这两个例子编写驱动。 #include linux/errno.h #include linux/kernel.h #include linux/module.h #include linux/slab.h #include linux/input.h #include linux/serio.h #include linux/init.h#define DRIVER_DESC EETI Egalax serial touchscreen driverMODULE_AUTHOR(Zolt??n B??sz??rm??nyi zboszorxxxxx); MODULE_DESCRIPTION(DRIVER_DESC); MODULE_LICENSE(GPL);/** Definitions global arrays.*/ #define SERIO_EGALAX 0x3f #define EGALAX_FORMAT_MAX_LENGTH 6 #define EGALAX_RESPONSE_BEGIN_BYTE 0x80 #define EGALAX_FORMAT_PRESSURE_BIT 0x40 #define EGALAX_FORMAT_TOUCH_BIT 0x01 #define EGALAX_FORMAT_RESOLUTION 0x06#define EGALAX_MIN_XC 0 #define EGALAX_MAX_XC 0x4000 #define EGALAX_MIN_YC 0 #define EGALAX_MAX_YC 0x4000#define EGALAX_GET_XC(data, resbits, shift) ((((data[1] (resbits)) 7) | (data[2] 0x7f)) shift) #define EGALAX_GET_YC(data, resbits, shift) ((((data[3] (resbits)) 7) | (data[4] 0x7f)) shift) #define EGALAX_GET_TOUCHED(data) (EGALAX_FORMAT_TOUCH_BIT data[0])/** Per-touchscreen data.*/struct egalax {struct input_dev *dev;struct serio *serio;int idx;int bytes;int resbits;int shift;unsigned char data[EGALAX_FORMAT_MAX_LENGTH];char phys[32]; };static void egalax_process_data(struct egalax *pegalax) {struct input_dev *dev pegalax-dev;if (pegalax-idx pegalax-bytes) {input_report_abs(dev, ABS_X, EGALAX_GET_XC(pegalax-data, pegalax-resbits, pegalax-shift));input_report_abs(dev, ABS_Y, EGALAX_GET_YC(pegalax-data, pegalax-resbits, pegalax-shift));//input_report_key(dev, BTN_TOUCH, EGALAX_GET_TOUCHED(pegalax-data));input_report_abs(dev, ABS_PRESSURE, EGALAX_GET_TOUCHED(pegalax-data));input_sync(dev);pegalax-idx 0;} }static irqreturn_t egalax_interrupt(struct serio *serio,unsigned char data, unsigned int flags) {struct egalax *pegalax serio_get_drvdata(serio);pegalax-data[pegalax-idx] data;if (EGALAX_RESPONSE_BEGIN_BYTE pegalax-data[0]) {pegalax-bytes (EGALAX_FORMAT_PRESSURE_BIT pegalax-data[0] ? 6 : 5);switch ((EGALAX_FORMAT_RESOLUTION pegalax-data[0]) 1) {case 0:pegalax-resbits 0x0f;pegalax-shift 3;break;case 1:pegalax-resbits 0x1f;pegalax-shift 2;break;case 2:pegalax-resbits 0x3f;pegalax-shift 1;break;default:pegalax-resbits 0x7f;pegalax-shift 0;break;}egalax_process_data(pegalax);}elsedev_dbg(serio-dev, unknown/unsynchronized data: %x\n,pegalax-data[0]);return IRQ_HANDLED; }static void egalax_disconnect(struct serio *serio) {struct egalax *pegalax serio_get_drvdata(serio);input_get_device(pegalax-dev);input_unregister_device(pegalax-dev);serio_close(serio);serio_set_drvdata(serio, NULL);input_put_device(pegalax-dev);kfree(pegalax); }/** egalax_connect() is the routine that is called when someone adds a* new serio device that supports egalax protocol and registers it as* an input device. This is usually accomplished using inputattach.*/static int egalax_connect(struct serio *serio, struct serio_driver *drv) {struct egalax *pegalax;struct input_dev *input_dev;int err;pegalax kzalloc(sizeof(struct egalax), GFP_KERNEL);input_dev input_allocate_device();if (!pegalax || !input_dev) {err -ENOMEM;goto fail1;}pegalax-serio serio;pegalax-dev input_dev;snprintf(pegalax-phys, sizeof(pegalax-phys),%s/input1, serio-phys);input_dev-name EETI eGalaxTouch Serial TouchScreen;input_dev-phys pegalax-phys;input_dev-id.bustype BUS_RS232;input_dev-id.vendor SERIO_EGALAX;input_dev-id.product 0;input_dev-id.version 0x0001;input_dev-dev.parent serio-dev;input_dev-evbit[0] BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);//input_dev-keybit[BIT_WORD(BTN_TOUCH)] BIT_MASK(BTN_TOUCH);input_set_abs_params(pegalax-dev, ABS_X,EGALAX_MIN_XC, EGALAX_MAX_XC, 0, 0);input_set_abs_params(pegalax-dev, ABS_Y,EGALAX_MIN_YC, EGALAX_MAX_YC, 0, 0);input_set_abs_params(pegalax-dev, ABS_PRESSURE, 0, 1, 0, 0);serio_set_drvdata(serio, pegalax);err serio_open(serio, drv);if (err)goto fail2;err input_register_device(pegalax-dev);if (err)goto fail3;return 0;fail3: serio_close(serio); fail2: serio_set_drvdata(serio, NULL); fail1: input_free_device(input_dev);kfree(pegalax);return err; }/** The serio driver structure.*/static struct serio_device_id egalax_serio_ids[] {{.type SERIO_RS232,.proto SERIO_EGALAX,.id SERIO_ANY,.extra SERIO_ANY,},{ 0 } };MODULE_DEVICE_TABLE(serio, egalax_serio_ids);static struct serio_driver egalax_drv {.driver {.name egalax,},.description DRIVER_DESC,.id_table egalax_serio_ids,.interrupt egalax_interrupt,.connect egalax_connect,.disconnect egalax_disconnect, };/** The functions for inserting/removing us as a module.*/static int __init egalax_init(void) {return serio_register_driver(egalax_drv); }static void __exit egalax_exit(void) {serio_unregister_driver(egalax_drv); }module_init(egalax_init); module_exit(egalax_exit); 只是修改了最后一点,其中egalax_serio_ids中的几个参数在应用程序中需要用到加上驱动编译内核更新后此时这个驱动是没有起作用的需要通过应用程序将串口与之绑定后才能正常工作。 应用程序如下 #include stdio.h #include unistd.h #include stdlib.h #include sys/types.h #include sys/stat.h #include sys/ioctl.h #include fcntl.h #include linux/fs.h #include errno.h #include string.h #include linux/fb.h #include malloc.h #include sys/mman.h #include termio.h #include linux/serio.h#define SERIO_ANY 0xff #define SERIO_EGALAX 0x3fint main(int argc, char* argv[]) {int dev,ret;char comdev[20];int ldisc;unsigned long type;struct termios option;int fd -1;if(argc ! 2){printf(-----------------------------------------\n);printf(\nUsage: %s [serial device(1-5)]\n, argv[0]);printf(Example: %s 5 n, argv[0]);printf(-----------------------------------------\n);return 0;}dev strtol(argv[1],NULL,10);sprintf(comdev,/dev/ttyAMA%d,dev);fd open(comdev,O_RDWR|O_NONBLOCK|O_NOCTTY);if (fd 0) {perror(comdev);exit(1);}tcgetattr(fd, option);option.c_iflag IGNPAR | IGNBRK;option.c_cflag HUPCL | CS8 | CREAD | CLOCAL | B9600;option.c_cc[VMIN] 1;option.c_cc[VTIME] 0;cfsetispeed(option,B9600);cfsetospeed(option,B9600);ret tcsetattr(fd, TCSANOW, option);if(ret 0) {perror(TCSANOW);exit(1);}ldisc N_MOUSE;ret ioctl(fd,TIOCSETD,ldisc);if(ret) {perror(TIOCSETD);}type SERIO_EGALAX | (SERIO_ANY 8) | (SERIO_ANY 16);ret ioctl(fd,SPIOCSTYPE, type);if(ret) {perror(SPIOCSTYPE);}read(fd,NULL,0);//close(fd);return 0; } 需要注意的是应用程序最后这个read一定要执行不然驱动里不会进行连接. 编译生成可执行文件seriotouch 应用程序配制完串口后需要与之前的驱动连接看设置spiocstype的设置需要保证这里的几个参数与驱动进行对应。 系统启动后执行seriotouch 5 后面这个对应的是串口号,执行这个后会看到驱动里的connect执行了同时会生成一个input节点。
http://www.dnsts.com.cn/news/75948.html

相关文章:

  • 防止网站流量被刷网址解析ip地址
  • 国家建设规范网站河北廊坊百度建站
  • 做户外的网站扁平化中文网站模板下载
  • wordpress 响应式产品展示站自建网站营销是什么
  • 做网站前需要准备什么主流软件开发工具
  • 官方网站建设 都来磐石网络网站版式布局
  • 什么网站做免费广告最有效果天津做网站建设公司
  • 网站开发前景好吗什么是网站空间信息
  • vs 2017c 怎么建设网站苏州网站设计公司济南兴田德润厉害吗
  • 北京蓝杉网站建设公司为什么我的网站备案通过还是显示未备案
  • 虚拟主机和网站的关系如何建立互联网公司网站
  • 福州网络公司网站做网站 广州
  • html怎么做网站设计图片类的wordpress
  • 泉州市建设局网站公示国外html5网站建设研究现状
  • wordpress网站logo宣传册制作网站
  • 简历模板免费网站做企业网站步骤
  • 韩语网站建设注意事项私人承包小工程哪里有
  • 吕梁建站公司自己设计app
  • 怎么去做一个网站网站建设8万属于资产吗
  • 郑州网站设计专家金山石化网站建设
  • 平顶山市湛河区建设局网站宁波网络公司招聘信息
  • 汨罗做网站安徽工程建设发展有限公司
  • 如何做文化传播公司网站网页设计代码html文件怎么查
  • 营销型网站建设应该注意什么购买域名的网站
  • 服装电子商务网站有哪些网站开发培训教程
  • 安全的网站建设服务叫别人做网站安全吗
  • 网站设计风格怎么写wordpress多用户模板
  • wordpress 文章长度上海网站优化上
  • 手机网站html声明网站网页怎么设计
  • iapp如何用网站做软件商城服务是什么软件