标签: cdc

从USB Virtual Com Port设备检测打开的PC COM端口

我正在使用带有STM32_USB-FS-Device_Lib_V3.2.1 USB库的STM32F105微控制器,并根据我们的目的调整了VCP示例(与RTOS和串行API集成).

问题是如果连接了USB电缆,但是Windows主机上没有打开端口,几分钟后设备会永久重新进入USB ISR,直到端口打开然后一切正常开始工作.

我已经检测了中断处理程序并且可以看到当故障发生时,ISR处理程序退出然后立即重新进入.发生这种情况是因为在退出中断时,OTG_FS_GINTSTS中的IEPINT标志不清楚.此时OTG_FS_DAINT包含0x00000002(IEPINT1设置),而DIEPINT1包含0x00000080(TXFE).调用清除TXFE的OTGD_FS_Handle_InEP_ISR()中的行,但该位不清除或立即重新置位.当主机上的COM端口重新打开时,中断结束时OTG_FS_GINTSTS和OTG_FS_DAINT的状态始终为零,并且以正常速率发生进一步的中断.请注意,只有在输出数据但主机没有打开端口时才会出现此问题.如果端口打开或没有输出数据,系统将无限期运行.我相信输出的数据越多,问题就越早出现,但目前这是轶事.

VCP代码有一个状态变量,它接受以下枚举值:

  UNCONNECTED,
  ATTACHED,
  POWERED,
  SUSPENDED,
  ADDRESSED,
  CONFIGURED
Run Code Online (Sandbox Code Playgroud)

我们使用CONFIGURED状态来确定是否将数据放入驱动程序缓冲区以进行发送.但是,当连接电缆而不是主机打开端口并连接应用程序时,将设置CONFIGURED状态.我看到当Windows打开端口时,会出现一连串的中断,所以似乎在这个事件上发生了一些通信; 我想知道是否有可能检测主机是否打开了端口.

我或许需要两件事之一:

  1. 防止USB代码在第一个实例中卡在ISR中
  2. 确定主机是否从设备端打开端口,并且仅在打开时推送数据以进行发送.

embedded usb device cdc stm32

5
推荐指数
1
解决办法
9379
查看次数

更改数据捕获错误

我试图通过传递最小和最大日期来获得启用CDC的表上的净更改.但是丢错误.

Msg 313, Level 16, State 3, Line 24
An insufficient number of arguments were supplied for the procedure or function cdc.fn_cdc_get_net_changes_ ... .
Run Code Online (Sandbox Code Playgroud)

我的代码如下:

DECLARE @CDate DATE = '2013-03-18' --This is the date after the CDC was enabled on the table
DECLARE @count INT;
DECLARE @lsnStartDatetime DATETIME;
DECLARE @lsnEndDateTime DATETIME;

DECLARE @begin_time DATETIME ,
@end_time DATETIME ,
@from_lsn BINARY(10) ,
@to_lsn BINARY(10);


SELECT  @lsnStartDatetime = CAST(CAST(@CDate AS NVARCHAR(10)) + ' 00:00:00' AS DATETIME)
SELECT  @lsnEndDateTime = CAST(CAST(@CDate AS NVARCHAR(10)) …
Run Code Online (Sandbox Code Playgroud)

sql-server cdc change-data-capture sql-server-2012

5
推荐指数
1
解决办法
1945
查看次数

在表级别启用 CDC 时出错

我在 SQL Server 2012 企业版 (11.0.2100.60) 上启用变更数据捕获 (CDC)

. 我可以使用以下 SQL 在数据库级别启用它,但无法在表级别启用。

Use DatabaseName
GO

Exec sys.sp_cdc_enable_db 
GO

EXEC sys.sp_cdc_enable_table @source_schema = N'dbo'
                            ,@source_name = N'TableName'
                            , @role_name = NULL
GO
Run Code Online (Sandbox Code Playgroud)

得到错误,如

'msg 22832,级别 16,状态 1,过程 sp_cdc_enable_table_internal,第 623 行

无法更新指示表 [dbo].[TableName] 已为变更数据捕获启用的元数据。执行命令 '[sys].[sp_cdc_add_job] @job_type = N'capture'' 时发生故障。返回的错误为 22836:“无法更新数据库 DatabaseName 的元数据以指示已添加变更数据捕获作业。执行命令“sp_add_jobstep_internal”时发生故障。返回的错误为 14234:“指定的‘@server’无效(sp_helpserver 返回有效值)。”。使用操作和错误来确定失败的原因并重新提交请求。'。使用操作和错误来确定失败的原因并重新提交请求。

有人会帮助我摆脱这种情况吗?

提前致谢..!!

sql sql-server cdc

5
推荐指数
1
解决办法
2102
查看次数

如何使用GoldenGate"Kafka"/"Kafka connect"处理程序处理oracle十进制类型?

我想使用Oracle GoldenGate(它的orcale cdc工具)将oracle与Kafka集成.我找到了两个处理程序:

  1. http://docs.oracle.com/goldengate/bd123110/gg-bd/GADBD/using-kafka-connect-handler.htm#GADBD-GUID-81730248-AC12-438E-AF82-48C7002178EC与avro格式化程序
  2. http://docs.oracle.com/goldengate/bd123110/gg-bd/GADBD/using-kafka-handler.htm#GADBD449

这个处理程序都不支持十进制类型(我的意思是它们不会将avro中的十进制视为逻辑类型,或者如何处理),此工具只是将十进制转换为double类型.在这种情况下,我们放松了精度.

有没有人知道处理小数的好方法,除了写自己的处理程序?

oracle cdc apache-kafka oracle-golden-gate

5
推荐指数
1
解决办法
335
查看次数

用于 Oracle 数据库源的 Kafka 连接器

我想构建一个 Kafka 连接器,以便近乎实时地从数据库中检索记录。我的数据库是Oracle Database 11gEnterprise Edition Release 11.2.0.3.0,表中有数百万条记录。首先,我想使用 CDC 将最小负载添加到我的数据库中。其次,我想根据某个日期后具有值的 LastUpdate 字段检索记录。

在 confluent 站点搜索,我发现的唯一开源连接器是“Kafka Connect JDBC”. 我认为这个连接器没有 CDC 机制,并且在连接器第一次启动时无法检索数百万条记录。我认为的替代解决方案是 Debezium,但 Confluent 站点上没有 Debezium Oracle Connector,我相信它是测试版。

你会建议哪种解决方案?我对 Kafka Connect JDBC 或 Debezium Connector 的假设有什么问题吗?还有其他解决方案吗?

cdc oracle11g apache-kafka oracle-cdc apache-kafka-connect

5
推荐指数
1
解决办法
4777
查看次数

CDC已启用,但未填充cdc.dbo <table-name> _CT表

我已使用以下步骤启用了CDC:

exec sys.sp_cdc_enable_db;

exec sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'table_name',
@role_name = N'CDC_Access',
@supports_net_changes = 1;
Run Code Online (Sandbox Code Playgroud)

我可以看到在系统表中创建了一个CT ; SQL Server代理已启用,我可以看到cdc.db_name_capture作业已创建并正在运行.

但是,即使正在填充table_name表,我也从未在CT表中看到任何内容.我在其他正在更新的数据库中为其启用了CDC的表,并且CDC 正在为它们捕获数据并将其存储在为该特定表创建的CT表中.

为什么这个表不能捕获数据,即使其他表是?

我在网上看到它可能与事务日志变得太大有关,但我仍然有足够的驱动器空间(~2TB免费).

我该怎么做来调试这个问题?

非常感谢你,提前!:)

编辑1

这是输出exec sys.sp_cdc_help_change_data_capture. subscription_events是我遇到麻烦的表.

在此输入图像描述

编辑2

这是输出exec sys.sp_cdc_help_jobs;.

在此输入图像描述

编辑3

这是输出select * from sys.dm_cdc_log_scan_sessions;.

在此输入图像描述

这是输出 select * from sys.dm_cdc_errors;

在此输入图像描述

编辑4

Running select serverproperty('productversion')提供以下版本号:11.0.3401.0.

sql-server cdc change-data-capture

4
推荐指数
1
解决办法
8183
查看次数

复合 USB CDC 小工具不适用于 Windows 主机

我有一个带有 USB 设备接口的嵌入式 Linux 3.19 系统。设备需要向主机公开三个 USB 接口:一个虚拟网络接口(RNDIS 或 CDC ECM)和两个虚拟串行端口(CDC ACM)。该设备需要与现代Windows(7+)和Linux(3.16+)主机配合。

鉴于 Windows 本身不支持 CDC ECM,我们决定实现两种 USB 配置(这是一种流行的方法):

  • 配置1,具有以下接口:
    • RNDIS
    • CDC ACM 0
    • CDC ACM 1
  • 配置2,具有以下接口:
    • 疾病预防控制中心
    • CDC ACM 0
    • CDC ACM 1

目的是让 Windows 使用本机支持的 ​​RNDIS 第一个配置(Windows 始终选择第一个 USB 配置);并让非 Windows 主机使用带有 CDC ECM 的第二个配置。

我整理了一个脚本(基于 David Lechner 的类似脚本):http://pastebin.com/VtAusEmf。下面提供了脚本的相关部分(请点击链接查看完整的脚本,它相当大):

mkdir -p ${g}
echo "${usb_ver}" > ${g}/bcdUSB
echo "${dev_class}" > ${g}/bDeviceClass
echo "${vid}" > ${g}/idVendor
echo "${pid}" > ${g}/idProduct
mkdir ${g}/strings/0x409
echo "${mfg}" > ${g}/strings/0x409/manufacturer
echo …
Run Code Online (Sandbox Code Playgroud)

linux usb cdc embedded-linux rndis

4
推荐指数
1
解决办法
4794
查看次数

STM32 USB CDC 的最大速度是多少?

我正在使用 stm32L151 通过 USB CDC 与 PC 通信。我使用 stm32 HAL 库来创建我的项目。我发现 USB 以 1ms 的间隔发送数据,每次发送 64 个字节。那么,USB CDC 的最大速度是 64kbyte/s 吗?而且这个速度远低于USB全速12Mbit/s。我怎样才能达到这个速度?或者至少是这个速度的一小部分?谢谢

usb cdc stm32

4
推荐指数
1
解决办法
1万
查看次数

FTDI实现标准CDC协议?

FTDI 是否实现标准通信设备类 (CDC) USB 协议?

我需要在 STM32 上实现一个主机,以将设备连接到 FTDI 串行芯片。但谷歌搜索显示,使用 ST 的库时会出现问题。

usb microcontroller cdc stm32 ftdi

4
推荐指数
1
解决办法
2018
查看次数

在 Google Cloud Postgres 上启用逻辑复制

是否有办法wal_level = logical在 Google Cloud Postgres 实例上启用逻辑复制?我想做 CDC(更改数据捕获)以将 WAL 记录流式传输到 Apache Kafka。感谢您的帮助!

postgresql replication cdc apache-kafka google-cloud-platform

4
推荐指数
1
解决办法
1275
查看次数