问题标签 [cdc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1945 浏览

sql - 更改表后无法重新启动 CDC

我需要为已被跟踪的表向 CDC 添加几列。我的方法如下:

但是,当该作业在重新添加后再次运行时,它会生成一个错误,表明违反了CDC.lsn_time_mapping.

有什么建议么?

谢谢!

0 投票
1 回答
849 浏览

visual-c++ - 在图片控件中查找像素值绘制图形

我正在创建一个类似于任务管理器的项目,在此处输入图像描述

现在我想绘制一个图表来显示 cpu 使用情况。

我的问题是我对在 vc++ 中绘画一无所知,但我的想法是我应该先像在任务管理器中那样制作一个网格,但我没有任何像素信息,所以请告诉我如何找到图片中的像素值控制。

0 投票
2 回答
2740 浏览

embedded - USB CDC 设备停止

我正在编写一个简单的虚拟串口设备来报告旧的串口。至此,我能够枚举设备并发送/接收字符。

在从主机到设备的不同数量的批量输出传输之后,端点似乎放弃并停止传输数据。在 PC 端,我收到一个写入错误,从 USBlyzer 跟踪判断,音乐停止在一个档位 (USBD_STATUS_STALL_PID)。但是,我的代码从未故意在该端点上发出 STALL 条件,并且生成的状态标志永远不会被设置。

鉴于发出请求和 STALL 之间经过的时间很短(<300 µs),这似乎是某种无效响应,而不是超时。在设备端,输出端点已准备就绪,缓冲区中的数据和正确的 DATA0/1 同步,但没有进一步发生。

请注意,即使在我开始发送“大量”数据之前,该设备似乎也可以长时间正常工作。据我所知,设备枚举/配置似乎也成功完成。哦,在此之后,批量输入端点继续正常工作。

作为记录,我使用的是标准的 Windows usbser.sys 驱动程序和 XMega128A4U µP。我还在多台 Windows Vista 和 7 机器上看到了相同的行为。

有什么想法我做错了什么,或者我可能会进行哪些进一步的测试来缩小范围?

USBlyzer 日志, USB CDC 堆栈, 测试项目

0 投票
1 回答
1580 浏览

java - 使用 Java 和 RXTX 检测 USB CDC 设备连接/断开连接

我有一个应用程序可以在有或没有连接到机器的 USB CDC 设备的情况下运行。该设备被编程为以特定答案回答问题,因此我可以检测连接到哪个串行端口。问题是,我需要知道何时执行此检查。我不想创建一个线程来一遍又一遍地运行这个检查,所以我需要知道如何监听“设备连接”事件。我以前搜索过它,但也许我只是没有使用正确的关键词,所以任何帮助都会非常好。

Obs:我正在使用 Java 1.7 和 RXTX 库。

0 投票
2 回答
9848 浏览

serial-port - 串行 COM 端口使用什么 USB 类?

处理与在 Windows 设备管理器中显示为 COM 端口的 USB 设备进行通信的 USB 类的名称是什么?对于 linux(至少对于 Fedora 17 和 Ubuntu 12.04),这些端口显示为 ACM(抽象控制模型,/dev/ttyACM#)。

我知道从历史上看,串行通信主要是通过现在已弃用的 RS-232 串行端口完成的。我相信今天的标准是使用 HID 通过 USB 进行通信。

谷歌搜索 ACM 显示它是 CDC(通信设备类)的一部分,CDC(通信设备类)是与 HID 相对的 USB 通信类(即 USB 设备可能使用 HID 或 CDC)。这篇维基百科文章揭示了 CDC/ACM 是一种通过 USB 模拟 RS-232 通信的方法。

有了这些信息,这种形式的串行通信不应该被称为“CDC”或“CDC/ACM”吗?

0 投票
2 回答
1288 浏览

c++ - 为什么 SelectObject 被调用两次?

我在 MFC 中阅读了代码,但对下面的代码感到困惑:

为什么CDC先选择默认字体(CFont* pFont = pDC->SelectObject(CFont::FromHandle(hFont));),然后再选择pFont?

0 投票
2 回答
2557 浏览

join - 使用 ETL 中的表连接更改数据捕获

在我的 ETL 过程中,我使用更改数据捕获 (CDC) 来仅发现自上次提取以来源表中已更改的行。然后我只对这些行进行转换。问题是,例如,当我有 2 个要加入一维的表时,其中只有一个发生了变化。例如,我有如下表国家和城镇:

国家:

城市:

现在假设在 Towns 表中添加了一个新行:

Country 表没有更改,因此这些表的 CDC 仅向我显示 Towns 表中的行。问题是当我在国家和城镇之间进行连接时,国家更改集中没有行,因此连接将导致空集。

你知道如何解决它吗?当然,可能会有更困难的情况,涉及 3 个或更多表以及后续连接。

0 投票
3 回答
4997 浏览

sql-server - HOWTO:解释 MSSQL CDC“__$update_mask”字段

由于我在如何使用“$update_mask”字段时遇到了很大的困难(出于性能原因,我不想调用 fn_cdc_is_bit_set),这里是 C# 代码:

  • updateMask是 CDC“fn_cdc_get_all_changes_[table]”查询中的“__$update_mask”字段的内容
  • colOrdinal是要从中获取更改标志的列的序号(使用“n_cdc_get_column_ordinal”检索此值)

结果是“ hasChanged ”标志。如果字段已在更新中更改,则设置为 true。

请注意,这适用于 SQL Server 2008 和 2012,但可能不适用于未来的版本。

0 投票
1 回答
257 浏览

sql - 使用具有系统管理员角色的登录帐户时未启用 CDC

尝试在我们的一个 SQL2012 实例上启用 CDC 时,当使用属于 sysadmin 固定服务器角色成员的登录帐户时,我收到错误消息。

Procedure sp_cdc_enable_db_internal,

无法更新指示数据库已启用更改数据捕获的元数据。执行命令“SetCDCTracked(Value = 1)”时发生故障,无法获取有关 WindowsNT 组/用户的信息”

有问题的登录帐户最初创建了数据库,因此在此特定数据库的 dbo 用户下的“登录名:”中提到。

当我在数据库上运行 sp_changedbowner 'sa' 然后再次运行该命令以启用 CDC 时,它起作用了。这是为什么?

我认为要启用 CDC,您要么必须是实际数据库中“db_owner”角色的成员,要么必须是 sysadmin 角色的成员。

有人可以帮我解释一下吗?

谢谢。

0 投票
1 回答
3427 浏览

linux - Linux cdc_acm 设备 - 发送到设备的意外字符

我在使用 cdc_acm 驱动程序在 USB 端口上发送意外字符时遇到问题。让这一切更令人困惑的是代码在 Ubuntu 12.04(3.2 内核)上运行良好,但在 Centos 6(3.6 内核)上失败(这个问题的主题)

USB 设备是 Bluegiga BLED112 蓝牙智能加密狗。它的嵌入式微控制器将随时在其 USB 接口上出现意外输入时重置。

测试代码打开端口,写入 4 个字节(一个 hello 消息)并期望读取响应。读取永远不会完成,因为意外字符会导致设备重置,从而导致集线器丢弃设备并重新枚举。

为了排除故障,这是我所做的:

  • 下载了 cdc_acm 驱动程序的源代码。添加了一堆 printk 调试消息和 stack_dumps 来跟踪正在发生的事情。
  • 我对“库存”cdc_acm 进行了 rmmod,并且对我的检测模块进行了 insmod。所有设备枚举都有效,附加了正确的驱动程序等。
  • 由于代码在 Ubuntu 12.04/Linux 3.2 上运行,我获取了 3.2 cdc_acm 代码并在 Centos 6/Linux 3.6 平台上编译了该模块。使用 3.2 模块而不是 3.6 模块并没有什么不同。我恢复到 3.6 模块。
  • 使用 usbmon 打开调试文件系统并观察 USB 流量。我可以看到 USB 接口上发送了额外的字符。
  • 为了观察发生了什么,在 cdc_acm 模块中的 printk 之上,我合并了 usb mon 的输出 (cat /sys/kernel/debug/usb/usbmon/3u | logger) 和测试应用程序的输出 ( scan_example /dev/ttyACM0 | logger -s) 所以我有一个时间相关的调试跟踪流。
  • 在 USB 端点上发送的虚假字符是 x5E x40 x5E x40 x5E x40 x5E x40 x41(在 ASCII 中是 ^@^@^@^@A),看起来像是某种探测或试图引起调制解调器的注意这些字符在应用程序的 write() 导致 4 个 hello 字节被发送到端点后立即发送。
  • 由于 cdc_acm 设备应该是调制解调器,我试图通过将其添加到 cdc_acm.c 中的 usb_device_id acm_ids[] 来关闭调制解调器控制

    /li>
  • 重新编译和 insmod'd 和 syslog 显示这已被识别(怪癖是 8),但功能没有变化。

NetowrkManager 和调制解调器管理器都没有运行,但我仍然怀疑某处有某种调制解调器控制功能,我只是不知道在哪里。

这是一个带注释的调试日志(MDV 为我添加到 cdc_acm 的那些 printk 加上前缀)

这是应用程序发送的 4 个字节 00 00 00 01

...这些额外的字符出乎意料地出现了 5e 40 5e 40 5e 40 ....

在这一点上,我们会自发地断开连接。

断开连接时的堆栈跟踪