数码之家

 找回密码
 立即注册
搜索
查看: 954|回复: 8

[C51] 学习开发stcisp安卓端,一点点进展记录

[复制链接]
发表于 2025-1-15 20:52:48 来自手机浏览器 | 显示全部楼层 |阅读模式
本帖最后由 兔包公 于 2025-1-15 21:02 编辑

发帖出错了,重新编辑
书接上回,搜索学习记录,STC-ISP烧录通讯协议
还是那句,万物皆可app,废话几句,说是最近在GitHub发现个AndriodIde的项目:https://github.com/AndroidIDEOfficial/AndroidIDE
可以在安卓端开发apk,整个UI界面还挺好用,xml布局视图,代码提示等都还可以,看起来像是基于termux终端出来的SDK图形界面化功能,反正躺着也是躺,于是又来研究研究。

一次次一点点几句代码,查到什么用什么,从Lids到SQL数据库,再到Assets再到布局,再到如何调用,说是很简单,懂者不难,难者不懂。
一段时间过后,这copy下,那copy一下,最基本的出来了,把主机定时发送7F给MCU,再把返回来数据读出来了。

又一段时间后,又把这数据解析成选项信息出来了。

说是CH340芯片的端点每次只能返回32个字节,而首次连接到MCU时返回的数据有50多个字节,它要触发2次,以致后期一些判断数据帧的逻辑很不好处理,或者说对我来说难了。谷姐下,沁恒官方论坛上有几个早年的帖子关于这个问题的反馈,他家建议等待(这根本就不是等待的问题,而且你分2次发,让我很难办),或使用他家其他更高级点芯片。

查看CH34XUARTDriver.jar库源码中的IDataCallBack,这个回调函数,这个嘛?缓冲区??看看就得了,咋也不懂,文化水平太低了。

你又说了,2次就2次了,搞个缓冲最后再组合起来就不就完了,事是那么回事,搞得我是头晕脑胀了,虽说是基本行了,但后续再进行握手擦除等时逻辑又难搞了。
于是水上一帖,请教请教大婶,比如下面这段代码,我的思路,来2个全局变量uartReceived再汇总,我能否从这个runOnUiThread线程内部类里传递这个数据出来呢?
相关代码插入沙发!
或者说该什么写这个接受数据的方法??
再者感觉CH340似乎有时候设置完串口参数后也要冷启动,在开发版上电源到mcu之间又加了个开关,又改了界面加了个重启驱动逻辑,总感觉这个0x00数据不像是mcu发出来的,而且CH340连接好后发出来的??
就这样,蹭个贴太难了,就这样,谢谢观看。

本帖子中包含更多资源

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

x

打赏

参与人数 2家元 +45 收起 理由
jf201006 + 30 謝謝分享
vip2128 + 15

查看全部打赏

 楼主| 发表于 2025-1-15 21:14:26 来自手机浏览器 | 显示全部楼层
本帖最后由 兔包公 于 2025-1-15 21:21 编辑

看看插入code能成不?另外发现stcgal中models数据库中有几个型号的eeprom与stc手册有出入,虽然没咋影响,但后期有空倒可以核对核对。果然不能插入。
private void registerDataCallback(UsbDevice usbDevice) {
        try {
            WCHUARTManager.getInstance()
                    .registerDataCallback(
                            usbDevice,
                            new IDataCallback() {
                                @Override
                                public void onData(int serialNumber, byte[] buffer, int length) {
                                    byte[] readData = new byte[length];
                                    System.arraycopy(buffer, 0, readData, 0, length);
                                    updateReadData(readData, length);
                                }
                            });

        } catch (Exception err) {
        }
    }

    /*更新读取数据UI*/
    /*CH340一次最多只返回32个字节数据,烦人*/
    public void updateReadData(byte[] buffer, int length) {
        if (buffer == null) {
            return;
        
       runOnUiThread(
                new Runnable() {
                    @Override
                    public void run() {
接收逻辑,合2为一,更新ui
}

                 
         
           

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2025-1-15 21:48:21 | 显示全部楼层
支持设备吗
回复 支持 反对

使用道具 举报

发表于 2025-1-15 22:14:44 | 显示全部楼层
太深奥了,完全看不懂。。。
回复 支持 反对

使用道具 举报

发表于 2025-1-16 09:20:41 | 显示全部楼层
如果是ch340芯片 ,使用其官方的例子,来修改,应该方便很多。
回复 支持 反对

使用道具 举报

发表于 2025-1-16 14:19:30 | 显示全部楼层
这个可以哦,使用手机实现无线烧录的功能吗?
回复 支持 反对

使用道具 举报

发表于 2025-1-16 19:38:06 | 显示全部楼层
电脑都是用的CH340下载的,使用电脑串口抓个下载程序时的数据看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-1-17 18:58:26 来自手机浏览器 | 显示全部楼层
devcang 发表于 2025-1-16 09:20
如果是ch340芯片 ,使用其官方的例子,来修改,应该方便很多。

就是那CH340官方的demo改的
回复 支持 反对

使用道具 举报

发表于 2025-1-17 22:08:20 | 显示全部楼层
建议去STC的官方论坛去发表、探讨
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-2-16 16:14 , Processed in 0.171601 second(s), 13 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

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