本章针对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)相关推荐

  1. 第七个猴子java_黑猴子的家:Java SE 练习题第七章

    尾部都有答案 第七章练习题(多态) (1)下列自'关多态的叙述正确的是哪项?(选两项) A. 父类的引用指向子类的实例是一种多态 B. 子类的引用指向子类的实例是一种多态 C. 接口的引用指向实现该接 ...

  2. Kali Linux 网络扫描秘籍 第七章 Web 应用扫描(一)

    第七章 Web 应用扫描(一) 作者:Justin Hutchens 译者:飞龙 协议:CC BY-NC-SA 4.0 7.1 使用 Nikto 扫描 Web 应用 Nikto 是 Kali 中的命令 ...

  3. 厦门大学c语言第七八章作业答案,数据结构第七章考试题库(含答案).doc

    数据结构第七章考试题库(含答案).doc 第七章 图一.选择题1图中有关路径的定义是( ).[北方交通大学 2001 一.24 (2分)]A由顶点和相邻顶点序偶构成的边所形成的序列 B由不同顶点所形成 ...

  4. C语言数据结构-第七章图-电大同步进度

    第七章图 内容简介 图结构中结点之间的关系是任意的,每个元素都可以和其他任何元素相关,即元素之间是多对多的关系. 图作为一种非线性数据结构,被广泛应用于多个技术领域,例如系统工程.化学分析.统计力学. ...

  5. 数字图像处理——第七章 小波和多分辨处理

    数字图像处理--第七章 小波和多分辨率处理 文章目录 数字图像处理--第七章 小波和多分辨率处理 写在前面 1 多分辨率处理 1.1 图像金字塔 1.2 多尺度和多分辨率的区别 2 小波 2.1 连续 ...

  6. 现实迷途 第七章 特殊客户

    第七章 特殊客户 注:原创作品,请尊重原作者,未经同意,请勿转载,否则追究责任. 江北一般都是上午待在办公室里,搜集信息或整理以前做过的系统,下午才出去站街招客. 站街站了一段时间后,江北有点不想去了 ...

  7. stm32 工业按键检测_「正点原子STM32Mini板资料连载」第七章 按键输入实验

    1)实验平台:正点原子STM32mini开发板 2)摘自<正点原子STM32 不完全手册(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第七章 按键输入实验 上一章,我们介 ...

  8. 第七章——DMVs和DMFs(2)——用DMV和DMF监控索引性能

    原文: 第七章--DMVs和DMFs(2)--用DMV和DMF监控索引性能 本文继续介绍使用DMO来监控,这次讲述的是监控索引性能.索引是提高查询性能的关键性手段.即使你的表上有合适的索引,你也要时时 ...

  9. 2017上半年软考 第七章 重要知识点

    第七章项目范围管理 []项目范围管理概念 [][]项目范围管理的含义和作用 项目范围管理内容p289 项目范围对项目管理的重要性?p289 [][]项目范围管理的主要过程 项目范围管理的6个过程是? ...

  10. 服务器架构之性能扩展-第七章(8)

    第七章Cacti系统监控邮件报警和压力测试 7.1 Cacti工作原理 原理简单来说,Cacti就是rrdtool的一个forefront,它内置了快速的获数据取工具.优秀的绘图模板以及许多设计精良的 ...

最新文章

  1. php.ini配置文件详解
  2. 小猿圈自学web前端之CSS3动画练习案例:用CSS3做个钟表
  3. 【FPGA】SRIO IP核系统介绍之事务类型(Transaction)
  4. “电商+金融”融合发展 开辟金融创新新路径
  5. [No0000D0] 让你效率“猛增十倍”,沉浸工作法到底是什么?
  6. 1.CCProgressTo进度动作,条形进度条,扇形进度条
  7. MVC架构设计——EF-Code First
  8. 同步服务器客户端位置,服务器和客户端信息同步方式
  9. 为OLED屏添加GUI支持2:2D图形库
  10. STC官方软件波特率计算器使用方法
  11. Fedora 安装 WPS
  12. amr转mp3,amr怎么转换mp3?
  13. scratch编程谷歌小恐龙游戏
  14. DP9637汽车故障诊断仪的原理与作用
  15. [云原生专题-26]:K8S - Kubernetes(K8S)Master集群构建与安装过程详细解读 - master节点的添加
  16. 恋爱话术表白头像漫画制作微信小程序
  17. 存储容量单位GB GiB MB MiB
  18. 深入了解iPad上的MouseEvent
  19. Python控制结构(二)
  20. B站不能拖动视频进度条问题

热门文章

  1. springboot集成solr实现全局搜索系列
  2. Oracle官网下载各版本JDK+查看各版本的API文档
  3. 蓝牙耳机连接笔记本电脑音量直接爆棚
  4. python字典包含指定键_筛选python字典中键包含特定字符串的项
  5. android 适配俄语添加,【技术贴】怎么在手机上添加俄语输入法?,怎样在电脑上打俄语重音?...
  6. hau 3037 Saving Beans【Lucas定理】
  7. 赵小楼《天道》《遥远的救世主》深度解析(140) ‘初恋’就是‘不可思议’的爱情。当你意识到‘它’的时候,它已经只存在‘回忆’里。
  8. smplayer中使用srt字幕乱码问题
  9. 5种尊重您隐私的替代搜索引擎
  10. Zynga发布魔法三消手游《Harry Potter: Puzzles Spells》