硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5235|回复: 5
收起左侧

[emWin] 解决了--emWinSPY截图用不了

[复制链接]

23

主题

336

回帖

405

积分

高级会员

积分
405
发表于 2020-10-27 18:32:52 | 显示全部楼层 |阅读模式
本帖最后由 hpxzw_foxmai 于 2020-10-27 19:08 编辑

我的屏幕接口是RGB565,GUI也是RGB565
使用emWinSPY截图报错,
msw\bitmap.cpp(922):assert "image.IsOk()" failed in wxBitmap::CreateFromImage():invalid image
生成的图片也是空的,没有数据

是不是emWinSPY截图,必须要ARGB8888的格式?

-----------------------------------------------------------------
问题解决了,
搞了半天是我忘了关看门狗。。。
我加个宏报警。。

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2020-10-28 09:59:17 | 显示全部楼层
注意两点:
1、emWin5.4x的ABGR格式有bug,5.3x无此问题

测试STemWin5.40和MDK中带的emWin5.42都有神奇的截图bug,之前版本无此问题,好坑
http://www.armbbs.cn/forum.php?m ... 2445&fromuid=58
(出处: 硬汉嵌入式论坛)


2、另外就是最新版JLINK驱动问题:
升级到最新版JLINK驱动后,发现监测小软件emWinSPY使用RTT模式异常了,网络模式没问题
http://www.armbbs.cn/forum.php?m ... 9715&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

23

主题

336

回帖

405

积分

高级会员

积分
405
 楼主| 发表于 2021-2-23 21:53:43 | 显示全部楼层
eric2013 发表于 2020-10-28 09:59
注意两点:
1、emWin5.4x的ABGR格式有bug,5.3x无此问题

老大,现在我有个新的项目,需要裸奔,不用操作系统
测试工程移植emwinSPY来截图有问题,总是卡死了, 你那边有解决方案吗?
---------------------------
if(bsp_CheckTimer(E_TIMER_TASK_EMWINSPY)) /* 10ms */
{
    apptask_emwinspy_callback();
}
void apptask_emwinspy_callback(void)
{
    GUI_SPY_Process(_Send_RTT, _Recv_RTT, NULL);
}
static int _Send_RTT(const U8 * buf, int len, void * pConnectInfo) {
  int r, RemBytes, Cnt;

  GUI_USE_PARA(pConnectInfo);
  Cnt = 10000;
  RemBytes = len;
  do {
    r = SEGGER_RTT_Write(_IndexUp, buf, RemBytes);
    buf += r;
    RemBytes -= r;
    if (RemBytes) {
      return -1;
      //GUI_X_Delay(1);
    }
  } while ((RemBytes > 0) && (--Cnt));
  return Cnt ? len : -1;
}
static int _Recv_RTT(U8 * buf, int len, void * pConnectInfo) {
  int r, RemBytes, Cnt;

  GUI_USE_PARA(pConnectInfo);
  Cnt = 10000;
  RemBytes = len;
  do {
    while (SEGGER_RTT_HasData(_IndexDown) == 0) {
      return -1;
      //GUI_X_Delay(1);
    };
    r = SEGGER_RTT_Read(_IndexDown, buf, RemBytes);
    buf += r;
    RemBytes -= r;
  } while ((RemBytes > 0) && (--Cnt));
  return Cnt ? len : -1;
}
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2021-2-24 09:49:10 | 显示全部楼层
hpxzw_foxmai 发表于 2021-2-23 21:53
老大,现在我有个新的项目,需要裸奔,不用操作系统
测试工程移植emwinSPY来截图有问题,总是卡死了,  ...

近期我测测。
回复

使用道具 举报

23

主题

336

回帖

405

积分

高级会员

积分
405
 楼主| 发表于 2021-2-24 10:03:47 | 显示全部楼层

老大 我解决了
用SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL就可以了
不用SEGGER_RTT_MODE_NO_BLOCK_TRIM
回复

使用道具 举报

23

主题

336

回帖

405

积分

高级会员

积分
405
 楼主| 发表于 2021-2-24 10:05:39 | 显示全部楼层
用SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL,裸奔测试没有问题,可以正常截图
代码就是按照上面的代码,10ms任务是在主循环里面
-----------------------
#define EMWINSYP_TASK "emWinSPY"
int GUI_SPY_X_StartServer(void) {
#if (USE_RTT == 1)
  //
  // Allocate buffers for RTT
  //
  _IndexUp   = SEGGER_RTT_AllocUpBuffer  (EMWINSYP_TASK, _acBufferUp,   sizeof(_acBufferUp),   SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL);
  if (_IndexUp < 0) {
    return 1;
  }
  _IndexDown = SEGGER_RTT_AllocDownBuffer(EMWINSYP_TASK, _acBufferDown, sizeof(_acBufferDown), SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL);
  if (_IndexDown < 0) {
    return 1;
  }
#endif
  //
  // O.k., server(s) started
  //
  return 0;
}
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-20 04:17 , Processed in 0.403528 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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