搜索
bottom↓
回复: 23

SuperView FlyThingsOS 串口显示屏上移植modbus协议支持串口RTU功能

[复制链接]

出0入0汤圆

发表于 2018-6-21 14:14:48 | 显示全部楼层 |阅读模式
SuperView 串口屏 运行的操作系统是中科世为基于Linux 开发的FlyThings OS;系统提供集成GUI开发环境,方便客户快速开发应用。
开发者页面:doc.zkswe.com;
modbus开源代码下载
可从github上下载libmodbus源码,然后先按照github说明完成configure ;

当然也可以下载我们配置好的第三方库文件:

https://github.com/zkswe/thirdPart/tree/master/libmodbus

将代码放入jni目录下的modbus目录:


注意新建项目后,系统默认打开的是串口模式,需要在main.cpp 里面注释掉串口的启动部分

  1. void onEasyUIInit(EasyUIContext *pContext) {  
  2.     // 初始化时打开串口  
  3.     // modbus 注释掉串口应用  
  4.     //UARTCONTEXT->openUart(CONFIGMANAGER->getUartName().c_str(), CONFIGMANAGER->getUartBaudRate());  
  5. }  
  6.   
  7. void onEasyUIDeinit(EasyUIContext *pContext) {  
  8.     // modbus 注释掉串口应用  
  9.     //UARTCONTEXT->closeUart();  
  10. }  
  11.   
  12. const char* onStartupApp(EasyUIContext *pContext) {  
  13.     return "mainActivity";  
  14. }  
复制代码

libmodbus RTU的接口介绍
modbus 上下文: modbus_t

通过modbus_t 可以操作写入,读取等操作。

1.新建一个modbus_t的上下文,在mainLogic.cc 里面添加如下代码:
  1. #include "modbus/modbus.h"  
  2.   
  3. modbus_t* mctx;  
复制代码


在onUI_init()  里面添加mctx的初始化:

  1. static void onUI_init(){  
  2.     //Tips :添加 UI初始化的显示代码到这里,如:mText1->setText("123");  
  3.     mctx = modbus_new_rtu("/dev/ttyS1", 9600, 'N', 8, 1); // Z11s平台为ttyS1,Z6s平台为ttyS2; 9600波特率,无校验,8数据位,1停止位;  
  4.     modbus_set_slave(mctx, 1);   // 设置从设备地址为1  
  5.     modbus_connect(mctx);    // 链接  
  6.     modbus_set_byte_timeout(mctx, 5,0);    // 设置数据超时为5秒,0 us  
  7. }  
复制代码

modbus_new_rtu:建立一个modbus RTU链接

modbus_set_slave:设置slave的设备地址

modbus_connect:modbus 链接

modbus_set_byte_timeout:设置modbus超时

写数据
modbus_write_register  如果需要切换设备地址,需要先调用  modbus_set_slave;

读数据
modbus_read_registers 如果需要切换设备地址,需要先调用  modbus_set_slave


样例程序:
  1. static bool onButtonClick_ButtonRead(ZKButton *pButton) {  
  2.     LOGD(" ButtonClick ButtonRead !!!\n");  
  3.     addr = atoi(mEdittextAddrPtr->getText().c_str());  
  4.     reg = atoi(mEdittextRegPtr->getText().c_str());  
  5.     modbus_set_slave(mctx, addr);  
  6.     UINT16 buff[2]={0};  
  7.     int ret = modbus_read_registers(mctx, reg,1, buff);  
  8.     LOGD("read ret %d buff %x,%x",ret,buff[0],buff[1]);  
  9.   
  10.     mEdittextDataPtr->setText((int)buff[0]);  
  11.     return true;  
  12. }  
  13.   
  14. static bool onButtonClick_ButtonWrite(ZKButton *pButton) {  
  15.     //LOGD(" ButtonClick ButtonWrite !!!\n");  
  16.     addr = atoi(mEdittextAddrPtr->getText().c_str());  
  17.     reg = atoi(mEdittextRegPtr->getText().c_str());  
  18.     data = atoi(mEdittextDataPtr->getText().c_str());  
  19.     modbus_set_slave(mctx, addr);  
  20.     modbus_write_register(mctx, reg, data);  
  21.     return true;  
  22. }  
复制代码


RTU测试工具界面:


终端显示界面


源码包

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出20入12汤圆

发表于 2018-7-4 07:59:20 | 显示全部楼层
开发环境下载挂了!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2018-7-4 12:18:00 | 显示全部楼层
gaolf_2012 发表于 2018-7-4 07:59
开发环境下载挂了!

这里进去试试
https://doc.zkswe.com/download

出20入12汤圆

发表于 2018-7-4 12:23:15 | 显示全部楼层
10:30左右已经恢复正常,杭州的曲奇云盘工作人员特意回电话询问结果,可见还不算太不靠谱.
不过我试了下连PC,驱动一直没有装成功

出0入10汤圆

发表于 2018-7-4 14:25:06 | 显示全部楼层
刚好要用串口屏,参考一下!
用LINUX,不知能否读写一些数据到TF卡或者FLASH中.

出0入0汤圆

 楼主| 发表于 2018-7-4 19:20:47 | 显示全部楼层
linbin250 发表于 2018-7-4 14:25
刚好要用串口屏,参考一下!
用LINUX,不知能否读写一些数据到TF卡或者FLASH中.

是的,非常方便就可以操作内部的存储或者是外部的tfcard

出0入0汤圆

 楼主| 发表于 2018-7-4 19:25:55 | 显示全部楼层
gaolf_2012 发表于 2018-7-4 12:23
10:30左右已经恢复正常,杭州的曲奇云盘工作人员特意回电话询问结果,可见还不算太不靠谱.
不过我试了下连PC, ...

自己部署这么高带宽的服务器不太现实,所以只能依靠第三方的共享盘。而百度这类盘限速太严重了。所以只选择了曲奇办公。

驱动可以通过驱动精灵,豌豆荚安装。

出10入0汤圆

发表于 2018-7-4 20:56:53 | 显示全部楼层
屏的排线还是有点怪怪的
另外这个屏长期看,价格有不有打算涨?涨多少?有些厂家是看用户差不多了,直接翻倍上去。你们的计划呢?100元?150?,,,

出0入0汤圆

 楼主| 发表于 2018-7-4 21:36:10 | 显示全部楼层
huike 发表于 2018-7-4 20:56
屏的排线还是有点怪怪的
另外这个屏长期看,价格有不有打算涨?涨多少?有些厂家是看用户差不多了,直接翻 ...

可以进店看看,已经调整到正常销售价格了。

出20入12汤圆

发表于 2018-7-5 07:33:05 | 显示全部楼层
huike 发表于 2018-7-4 20:56
屏的排线还是有点怪怪的
另外这个屏长期看,价格有不有打算涨?涨多少?有些厂家是看用户差不多了,直接翻 ...

利用手上现成的usb转485板飞了个232TTL转485,隔离处理后放心多了.


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出10入0汤圆

发表于 2018-7-5 10:50:55 | 显示全部楼层
gaolf_2012 发表于 2018-7-5 07:33
利用手上现成的usb转485板飞了个232TTL转485,隔离处理后放心多了.

我是指屏背后的排线

出20入12汤圆

发表于 2018-7-5 11:08:19 | 显示全部楼层
huike 发表于 2018-7-5 10:50
我是指屏背后的排线

当时我也纳闷了一会儿,三组排线变一组?后来仔细看才发现有的直接焊到板上了.

出0入10汤圆

发表于 2018-7-5 12:32:18 | 显示全部楼层
zhonggp 发表于 2018-7-4 19:20
是的,非常方便就可以操作内部的存储或者是外部的tfcard

谢谢!
我认真看了网页上的介绍,似乎入手还是需要一些基础,看来需要摸爬滚打一下.

有关存储.似乎支持的是 KEY与Value的方式.感觉像是读写INI文件的感觉.

链接如下:
https://doc.zkswe.com/data

内容描述如下:
本框架提供了一套简单的数据存储接口,以键-值对的方式存储,接口见storage/StoragePreferences.h:

// 存储接口
static bool putString(const std::string &key, const std::string &val);
static bool putInt(const std::string &key, int val);
static bool putBool(const std::string &key, bool val);
static bool putFloat(const std::string &key, float val);

// 删除指定键
static bool remove(const std::string &key);
// 清空存储数据
static bool clear();

// 获取接口,获取不到对应键值,返回defVal默认值
static std::string getString(const std::string &key, const std::string &defVal);
static int getInt(const std::string &key, int defVal);
static bool getBool(const std::string &key, bool defVal);
static float getFloat(const std::string &key, float defVal);


第1个问题
=============
这个空间能存多少?
现在有一个需求是,记录事件,我不想把事件存到单片机里面,空间实在有限.
事件要求是:
1. 年月日时分秒,
2. 事件内容字符串

所以,我打算建立一组KEY
例如 EVENT_00  -> EVENT_99    内容为字符串,预计字符串长度为50个字节.

不知能不能存储这么多.
其次,需要用列表框显示,并且在右边有一个下拉滚动条,以拖动显示.

第2个问题
=============
你的商店里面有2个7寸屏幕,
分别是
7寸高清1024x600串口屏 Linux替换Android 音视频 电容屏 WiFi
中科世为SuperView Z11s 7寸串口屏 800x480 Linux FlyThingsOS

链接就不贴了
问一下,这2个7寸屏幕除了分辨率,其余都一样么?

出0入0汤圆

 楼主| 发表于 2018-7-5 21:02:04 | 显示全部楼层
linbin250 发表于 2018-7-5 12:32
谢谢!
我认真看了网页上的介绍,似乎入手还是需要一些基础,看来需要摸爬滚打一下.

回答你的问题:

zhonggp 发表于 2018-7-4 19:20
是的,非常方便就可以操作内部的存储或者是外部的tfcard

谢谢!
我认真看了网页上的介绍,似乎入手还是需要一些基础,看来需要摸爬滚打一下.

有关存储.似乎支持的是 KEY与Value的方式.感觉像是读写INI文件的感觉.

链接如下:
https://doc.zkswe.com/data

内容描述如下:
本框架提供了一套简单的数据存储接口,以键-值对的方式存储,接口见storage/StoragePreferences.h:

// 存储接口
static bool putString(const std::string &key, const std::string &val);
static bool putInt(const std::string &key, int val);
static bool putBool(const std::string &key, bool val);
static bool putFloat(const std::string &key, float val);

// 删除指定键
static bool remove(const std::string &key);
// 清空存储数据
static bool clear();

// 获取接口,获取不到对应键值,返回defVal默认值
static std::string getString(const std::string &key, const std::string &defVal);
static int getInt(const std::string &key, int defVal);
static bool getBool(const std::string &key, bool defVal);
static float getFloat(const std::string &key, float defVal);


第1个问题
=============
这个空间能存多少?
内部存储1M空间,当然可以定制大小。

现在有一个需求是,记录事件,我不想把事件存到单片机里面,空间实在有限.
事件要求是:
1. 年月日时分秒,
2. 事件内容字符串

所以,我打算建立一组KEY
例如 EVENT_00  -> EVENT_99    内容为字符串,预计字符串长度为50个字节.

不知能不能存储这么多.
其次,需要用列表框显示,并且在右边有一个下拉滚动条,以拖动显示.

这个建议使用sqlite数据库的方式,具体的方法建议参考我们有个sqlite 的使用方法。

第2个问题
=============
你的商店里面有2个7寸屏幕,
分别是
7寸高清1024x600串口屏 Linux替换Android 音视频 电容屏 WiFi
中科世为SuperView Z11s 7寸串口屏 800x480 Linux FlyThingsOS

链接就不贴了
问一下,这2个7寸屏幕除了分辨率,其余都一样么?

是的,只有分辨率不同

出0入0汤圆

 楼主| 发表于 2018-7-5 21:03:10 | 显示全部楼层
gaolf_2012 发表于 2018-7-5 11:08
当时我也纳闷了一会儿,三组排线变一组?后来仔细看才发现有的直接焊到板上了. ...

板上预留了485的接口位置。

出0入0汤圆

 楼主| 发表于 2018-7-5 21:04:36 | 显示全部楼层
huike 发表于 2018-7-4 20:56
屏的排线还是有点怪怪的
另外这个屏长期看,价格有不有打算涨?涨多少?有些厂家是看用户差不多了,直接翻 ...

那个不是焊接了。是被压倒板子下面了。实际背面在店里面有图片

出0入10汤圆

发表于 2018-7-6 16:15:23 | 显示全部楼层
zhonggp 发表于 2018-7-5 21:02
回答你的问题:

zhonggp 发表于 2018-7-4 19:20

谢谢:)
我测试安装软件,没有找到模拟运行功能,似乎自由连上板子之后才能运行,是么?

出0入0汤圆

 楼主| 发表于 2018-7-6 19:04:47 | 显示全部楼层
linbin250 发表于 2018-7-6 16:15
谢谢:)
我测试安装软件,没有找到模拟运行功能,似乎自由连上板子之后才能运行,是么? ...

是的,PC端模拟器还在开发中

出20入12汤圆

发表于 2018-7-7 14:18:36 | 显示全部楼层
14:11:53 **** 构建 of configuration Debug for project modbusTest ****
ndk-build.cmd -j4 all
无法运行程序“ndk-build.cmd”:Launching failed

Error: Program "ndk-build.cmd" not found in PATH
PATH=[D:/zkswe/flythings-ide-win32-win32-x86/bin/jre/bin/client;D:/zkswe/flythings-ide-win32-win32-x86/bin/jre/bin;D:/zkswe/flythings-ide-win32-win32-x86/bin/jre/lib/i386;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;D:\zkswe\flythings-ide-win32-win32-x86\bin]

14:11:53 Build Finished (took 34ms)
1楼工程下载后编译失败.这个如何解决呢?

出0入0汤圆

 楼主| 发表于 2018-7-7 15:33:08 | 显示全部楼层
gaolf_2012 发表于 2018-7-7 14:18
14:11:53 **** 构建 of configuration Debug for project modbusTest ****
ndk-build.cmd -j4 all
无法运 ...

https://doc.zkswe.com/problems

出0入0汤圆

发表于 2018-7-7 15:34:20 来自手机 | 显示全部楼层
ok        

出0入10汤圆

发表于 2018-7-31 09:04:16 | 显示全部楼层
屏幕买到了,开始实测。。。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入10汤圆

发表于 2018-8-16 17:59:00 | 显示全部楼层
询问一个需求:

大约5寸的屏幕,我想显示一个从上位机(电脑)传送过来的图片,希望是USB接口的方式,(串口估计传送估计比较慢)
上位机(电脑),发送一张图片的内容,然后显示屏上显示出来.

不知道行不行.

出0入0汤圆

发表于 2021-3-11 11:44:23 | 显示全部楼层
fly things ide编译出现这个问题, 请问要怎么解决啊?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 -- 东莞阿莫电子网站 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2023-1-30 11:50

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表