第七章、TPP2(G2)
本章针对TIBBO提供的Device Server硬件开发模块TPP2(G2)进行介绍,TPP2是典型的Programmable Device Server设备,可以完全独立运作可以让用户透过这个硬件模块,体验TIBBO提供的Device Server嵌入式功能。
开始本章内容介绍前,提醒您要顺利学习与执行本章的范例程序,您需要先准备以下软硬件:
1.TPP2(G2)硬件;
2、TIDE:建议使用最新版,本书撰写时最新版本是5.04.20,您可以在下面网址下载使用https://tibbo.com/programmable.html#tide,关于TIDE的详细说明请见第3章。
3、TiOS:建议使用最新版,本书撰写时最新版本是3.80.18,您可以在下面网址下载使用http://tibbo.com/downloads/basic/firmware.html。
一、取得与安装TIDE
Tibbo所提供的系统开发工具称之为TIDE,要开发TPP2(G2)的系统,当然也需要它,因此,本节首先介绍如何从Tibbo网站取得最新的TIDE,同时如果改版,Tibbo也会自动进行更新,保证各位下载的同时一定是最新版本。您可以进入https://tibbo.com/网页,选择Tibbo IDE (TIDE)(PC开发软件),本书撰写时最新版本为5.04.20。提醒您,下载前请先记得要注册成为Tibbo网站会员并登入后再进行下载作业。
顺利取得TIDE后,就可以开始进行安装,目前TIDE的主流windows安装环境有Windows7, Windows8、Windows10等。您只要依循Windows应用程序正常安装启动程序(鼠标点选两下exe档案)就可以看到一个版权宣告画面,如果没有任何问题,请点选「I agree」。
接着,进入安装项目选择画面,核心程序「Core files」是一定要安装的,您可以选择是否安装Samples(范例)、Documentation(说明文件)、Non-broadcast UDP transport (WinPCap 4.1.2是行业标准的数据包捕获引擎。非广播UDP传输需要)或在Windows开始选项内建立快捷方式(Create Start Menu Shortcuts),不要的请将前面的勾选符号移除,建议您第一次安装或硬盘空间足够时都全部安装。
接着,点选Next可以看到安装位置选择画面,默认的安装位置是C:\Program Files (x86)\Tibbo\TIDE,您可以依照自己的需要调整或改变这个安装目录,系统下面会提示您需要的安装空间与您可以使用的空间,确定后请按Install,就会启动安装画面与进度,完成后若您勾选「Run Tibbo TIDE」,您将会看到TIDE环境窗口画面。
下次,如果您要启动TIDE,请点选「开始>程序集>Tibbo> Tibbo IDE」,至此,TIDE已经顺利安装完成,TIDE的环境操作与功能说明,我们已在第三章中讨论,下面我们将进入到使用TIDE来实际链接硬件模块的部分,继续我们整体开发环境介绍之目的。
更多有关于TIDE的说明,请参见本书第三章之说明。
二、LED_Blinker范例
接着,我们就来下载最简单的入门程序LED_blinker,您可以在下面网址取得LED_blinker,https://tibbo.com/programmable/applications/examples/led_blinker.html请选择「Code and Application」(应用程序代码),进入后,请慢慢寻找「LED_blinker」,未来这里将是大家开发程序实很好的参考平台。
点选进入「LED_blinker」后,请找到「Open GitHub repository」选项,用鼠标点选,会进入Github界面,再选择「Code」就可以下载范例的源代码。档案是zip格式的压缩文件,请选择您要存盘的目录,下载储存后请将其解压缩,会自动建立一个名为「LED_blinker」的目录,目录内就是我们要开启使用的所有范例程序源文件。
「LED_blinker」范例程序共有3个文件,Tibbo把一个程序称做一个Project(项目),主要文件是「LED Blinker.tpr」,也是范例程序开启的入口文件,项目内各文件的组成与用途我们将在后面章节说明。
「LED Blinker」专案将会被TIDE开启,这是一个已经可以执行的项目,主要是控制TPP2(G2)(或其他Tibbo硬件模块)上LED灯号明灭的程序。剩下需要调整的只有「Platform」与「target」两项。
请选择「Project > Settings」,就可以进入项目属性设定画面,我们将设定「Platform」与「target」两项属性,请在「Platform」项次选择对应的硬件Platform,这里当然是 「TPP2(G2)」;再来,往下看到「Target address」项次,请使用「Select」按钮选择目标硬件,按下「Select」按钮后会出现Device Explorer画面,此时,请选择目标硬件。现在,您可以执行本项目,如果正确执行,您可以发现TPP2(G2)上的LED灯号将会有明灭动作,代表您的TIDE环境与TPP2(G2)硬件都在正常运作中。
三、设定IP与网站
这一节介绍如何设定TPP2(G2)的通讯IP位置与Web Server,并透过此IP存取TPP2(G2)内部的Web Server。首先,请建立本节专用的新项目,并将其命名为「TPP2(G2)_WEB_DEMO」。
我们将设定通讯IP的语法写在程序一执行时就执行,所以需要将程序代码撰写于 main.tbs的「on_sys_init」事件中。这里我们设定通讯IP=1.0.xx.xx,请您依据您的网络状况设定本参数。光有IP参数还不足以让程序动作,需要些额外设定才能启动网络服务,我们将这些撰写于fun.tbs程序中,因此需要加入fun.tbs这个程序档案,
请在fun.tbs程序中输入程序代码,主要是产生一个名称为「set_net_ip」的子程序,传入参数就是IP,也就是在on_sys_init事件中设定的IP,如此就可以透过set_net_ip将此设定值写入TPP2(G2)中。因为产生「set_net_ip」子程序,所以需要在global.tbh中宣告该子程序,接着,就是要在程序中实际呼叫子程序「set_net_ip」,在「on_sys_init」事件中加入set_net_ip(ip)这段程序代码。
到底为止,程序执行后TPP2(G2)就会有一组可被链接的IP位置,您可以用网络的ping指令来测试。但这里,我们顺便介绍TPP2(G2)内建Web Server的启动与运作程序,再搭配IP就可以利用浏览器看到实际结果。
请再开启fun.tbs,我们将启动Web Server的子程序也放在这里,并将其命名为 「html_init」,程序如下所示:
设定TPP2(G2)内网页服务器功能sub html_initdim f as byte 'TELNET/HTTPfor f=SOCK_HTTP to SOCK_HTTP+NUM_HTTP_SOCKETS-1sock.num=f sock.txbuffrq(HTTP_TX_SZ) 'sock.rxbuffrq(1) sock.varbuffrq(HTTP_TX_SZ)sock.redir(PL_REDIR_SOCK0+sock.num)next f sys.buffalloc
'TELNET/HTTPfor f=SOCK_HTTP to SOCK_HTTP + NUM_HTTP_SOCKETS-1sock.num=f sock.protocol=PL_SOCK_PROTOCOL_TCP sock.localportlist="23"sock.httpportlist="80" sock.connectiontout=40sock.inconmode= PL_SOCK_INCONMODE_ANY_IP_ANY_PORTsock.reconmode= PL_SOCK_RECONMODE_0
next f
end sub
与set_net_ip相同,也需要在global.tbh中宣告html_init子程序,同时还需要加入启动Web Server需要专用的参数设定,启动Web Server后,当然需要有网页才能有画面输出到浏览器,本项目设定的index.html档案内容,请将其加入项目的「HTML Files」区段。最后,再在on_sys_init事件中加入html_init子程序的呼叫,如此TPP2(G2)将同时具备有IP与WebServer。
现在,请先确认「Platform」与「target」都正确,然后执行本项目,执行成功后,请开启浏览器,再输入所设定的IP,您就可以看到画面。
以上示范的index.html档案是一个固定内容的档案,然而HTML档案在Tibbo的系统中是允许与程序区块产生互动的,也就是可以将变量值放入HTML内显示,这里我们示范这个功能。要完成这个链接,要透过子程序「socket_setsend」,与前面两个附程序相同,我们也将「socket_setsend」放在fun.tbs中。
完整子程序「socket_setsend」如下:
'将TIBBO Basic程序内的数据显示到HTML页面
sub sock_setsend(byref s as string)
'Making sure the tx buffer is free before adding more data to the buffer. while sock.txfree<len(s)if sock.num >= SOCK_HTTP and sock.num < SOCK_HTTP+NUM_HTTP_SOCKETS thenif sock.statesimple = PL_SSTS_CLOSED then sock.txclearexit subend ifelsefor sock.num = SOCK_HTTP to SOCK_HTTP+NUM_HTTP_SOCKETS-1sock.close next sock.num exit subend if wend sock.setdata(s) sock.send
end sub
当然不要忘了需要在global.tbh中加入子程序「socket_setsend」的宣告
接着就是要修改index.html,让其可以与Tibbo Basic程序整合,主要一行程序就是<?sock_setsend(HTTP_TX_SZ)?>,显示global.tbh中设定的一个变量HTTP_TX_SZ
现在,请再次执行本项目,执行成功后,请开启浏览器,再输入所设定的IP,
接着,我们在「on_sys_init」事件中加入RS232讯号撷取的设定程序。
RS232讯号接取的设定程序完整程序如下:
ser.num = 0ser.baudrate = ser.div9600ser.interface = PL_SER_SI_HALFDUPLEXser.interchardelay = 50ser.parity = PL_SER_PR_NONEser.rxbuffrq(1)ser.txbuffrq(1)sys.buffalloc
ser.enabled = YES
当有外部讯号透过RS232通讯端口进入TPP2(G2)时会触发「on_ser_data_arrival」事件,我们需要在该事件内撰写数据撷取程序,如下所示。
「on_ser_data_arrival」事件的完整程序如下,接取到的数据将放入变量rx_data中:
public dim rx_data as string 'RFID卡号资料
sub on_ser_data_arrival()
'TODO: place "on_ser_data_arrival" event handler code here... rx_data = ""while ser.rxlen > 0rx_data = rx_data + ser.getdata(255)wend
end sub
最后,我们将撷取的变量rx_data数据放入index.html中显示,一样是使用「socket_setsend」子程序。请再次执行本项目,执行成功后,请开启浏览器,再输入所设定的IP,您就可以看到RFID卡号显示到网页上的结果
四、读取档案
本节介绍TPP2的档案存取功能,针对的是ROM File,也就是固定内容的只读文件。这节我们同样不建立新项目,继续延续上节的「TPP2_WEB_DEMO」项目,再加入档案存取程序,将读取到的数据透过index.html显示。
我们先建立一个要被读取的档案,名称为sn.txt,并将其加入资源文件中,其次,我们在global.tbh中宣告变量s,用以存放从sn.txt中读取出来的档案内容,最后再显示到index.html上。
此处我们将利用TPP2内的定时器功能,固定时间就将档案内容读取送出到index.html。TPP2内的定时器是「on_sys_timer」事件。我们把档案读取的程序放置于「on_sys_timer」事件中。
「on_sys_timer」事件中档案读取的完整程序如下:
public dim s as string
sub on_sys_timer()
' TODO:place"on_sys_timer"eventhandlercodehere...dim i as wordif sys.timercount mod 2 = 0 thenromfile.open("sn.txt")i=romfile.find(romfile.pointer,">",1) '以符号>为分界点取出数据while i<>0'读出所有数据romfile.pointer=i+1 '从>符号开始的位置往后移动一个s=s+romfile.getdata(7)+"<br>"'取出7个bytesi=romfile.find(romfile.pointer,">",1)'找到下一个>起始的位置wend
'i=romfile.find(romfile.pointer,"9403005",1)'找到9403005的起始位置
end if
end sub
最后,我们将撷取到的档案数据,即变量s的数据放入index.html中显示,
请再次执行本项目,执行成功后,请开启浏览器,再输入所设定的IP,您就可以看到 index.html中显示变量s的画面
技术支持:司成
联系方式:
seacer@protonmail.com
18538515890@163.com
第七章、TPP2(G2)相关推荐
- 第七个猴子java_黑猴子的家:Java SE 练习题第七章
尾部都有答案 第七章练习题(多态) (1)下列自'关多态的叙述正确的是哪项?(选两项) A. 父类的引用指向子类的实例是一种多态 B. 子类的引用指向子类的实例是一种多态 C. 接口的引用指向实现该接 ...
- Kali Linux 网络扫描秘籍 第七章 Web 应用扫描(一)
第七章 Web 应用扫描(一) 作者:Justin Hutchens 译者:飞龙 协议:CC BY-NC-SA 4.0 7.1 使用 Nikto 扫描 Web 应用 Nikto 是 Kali 中的命令 ...
- 厦门大学c语言第七八章作业答案,数据结构第七章考试题库(含答案).doc
数据结构第七章考试题库(含答案).doc 第七章 图一.选择题1图中有关路径的定义是( ).[北方交通大学 2001 一.24 (2分)]A由顶点和相邻顶点序偶构成的边所形成的序列 B由不同顶点所形成 ...
- C语言数据结构-第七章图-电大同步进度
第七章图 内容简介 图结构中结点之间的关系是任意的,每个元素都可以和其他任何元素相关,即元素之间是多对多的关系. 图作为一种非线性数据结构,被广泛应用于多个技术领域,例如系统工程.化学分析.统计力学. ...
- 数字图像处理——第七章 小波和多分辨处理
数字图像处理--第七章 小波和多分辨率处理 文章目录 数字图像处理--第七章 小波和多分辨率处理 写在前面 1 多分辨率处理 1.1 图像金字塔 1.2 多尺度和多分辨率的区别 2 小波 2.1 连续 ...
- 现实迷途 第七章 特殊客户
第七章 特殊客户 注:原创作品,请尊重原作者,未经同意,请勿转载,否则追究责任. 江北一般都是上午待在办公室里,搜集信息或整理以前做过的系统,下午才出去站街招客. 站街站了一段时间后,江北有点不想去了 ...
- stm32 工业按键检测_「正点原子STM32Mini板资料连载」第七章 按键输入实验
1)实验平台:正点原子STM32mini开发板 2)摘自<正点原子STM32 不完全手册(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第七章 按键输入实验 上一章,我们介 ...
- 第七章——DMVs和DMFs(2)——用DMV和DMF监控索引性能
原文: 第七章--DMVs和DMFs(2)--用DMV和DMF监控索引性能 本文继续介绍使用DMO来监控,这次讲述的是监控索引性能.索引是提高查询性能的关键性手段.即使你的表上有合适的索引,你也要时时 ...
- 2017上半年软考 第七章 重要知识点
第七章项目范围管理 []项目范围管理概念 [][]项目范围管理的含义和作用 项目范围管理内容p289 项目范围对项目管理的重要性?p289 [][]项目范围管理的主要过程 项目范围管理的6个过程是? ...
- 服务器架构之性能扩展-第七章(8)
第七章Cacti系统监控邮件报警和压力测试 7.1 Cacti工作原理 原理简单来说,Cacti就是rrdtool的一个forefront,它内置了快速的获数据取工具.优秀的绘图模板以及许多设计精良的 ...
最新文章
- php.ini配置文件详解
- 小猿圈自学web前端之CSS3动画练习案例:用CSS3做个钟表
- 【FPGA】SRIO IP核系统介绍之事务类型(Transaction)
- “电商+金融”融合发展 开辟金融创新新路径
- [No0000D0] 让你效率“猛增十倍”,沉浸工作法到底是什么?
- 1.CCProgressTo进度动作,条形进度条,扇形进度条
- MVC架构设计——EF-Code First
- 同步服务器客户端位置,服务器和客户端信息同步方式
- 为OLED屏添加GUI支持2:2D图形库
- STC官方软件波特率计算器使用方法
- Fedora 安装 WPS
- amr转mp3,amr怎么转换mp3?
- scratch编程谷歌小恐龙游戏
- DP9637汽车故障诊断仪的原理与作用
- [云原生专题-26]:K8S - Kubernetes(K8S)Master集群构建与安装过程详细解读 - master节点的添加
- 恋爱话术表白头像漫画制作微信小程序
- 存储容量单位GB GiB MB MiB
- 深入了解iPad上的MouseEvent
- Python控制结构(二)
- B站不能拖动视频进度条问题
热门文章
- springboot集成solr实现全局搜索系列
- Oracle官网下载各版本JDK+查看各版本的API文档
- 蓝牙耳机连接笔记本电脑音量直接爆棚
- python字典包含指定键_筛选python字典中键包含特定字符串的项
- android 适配俄语添加,【技术贴】怎么在手机上添加俄语输入法?,怎样在电脑上打俄语重音?...
- hau 3037 Saving Beans【Lucas定理】
- 赵小楼《天道》《遥远的救世主》深度解析(140) ‘初恋’就是‘不可思议’的爱情。当你意识到‘它’的时候,它已经只存在‘回忆’里。
- smplayer中使用srt字幕乱码问题
- 5种尊重您隐私的替代搜索引擎
- Zynga发布魔法三消手游《Harry Potter: Puzzles Spells》