我正在使用带有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打开端口时,会出现一连串的中断,所以似乎在这个事件上发生了一些通信; 我想知道是否有可能检测主机是否打开了端口.
我或许需要两件事之一:
我试图通过传递最小和最大日期来获得启用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 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 返回有效值)。”。使用操作和错误来确定失败的原因并重新提交请求。'。使用操作和错误来确定失败的原因并重新提交请求。
有人会帮助我摆脱这种情况吗?
提前致谢..!!
我想使用Oracle GoldenGate(它的orcale cdc工具)将oracle与Kafka集成.我找到了两个处理程序:
这个处理程序都不支持十进制类型(我的意思是它们不会将avro中的十进制视为逻辑类型,或者如何处理),此工具只是将十进制转换为double类型.在这种情况下,我们放松了精度.
有没有人知道处理小数的好方法,除了写自己的处理程序?
我想构建一个 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:
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免费).
我该怎么做来调试这个问题?
非常感谢你,提前!:)
这是输出exec sys.sp_cdc_help_change_data_capture. subscription_events是我遇到麻烦的表.

这是输出exec sys.sp_cdc_help_jobs;.

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

这是输出 select * from sys.dm_cdc_errors;

Running select serverproperty('productversion')提供以下版本号:11.0.3401.0.
我有一个带有 USB 设备接口的嵌入式 Linux 3.19 系统。设备需要向主机公开三个 USB 接口:一个虚拟网络接口(RNDIS 或 CDC ECM)和两个虚拟串行端口(CDC ACM)。该设备需要与现代Windows(7+)和Linux(3.16+)主机配合。
鉴于 Windows 本身不支持 CDC ECM,我们决定实现两种 USB 配置(这是一种流行的方法):
目的是让 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) 我正在使用 stm32L151 通过 USB CDC 与 PC 通信。我使用 stm32 HAL 库来创建我的项目。我发现 USB 以 1ms 的间隔发送数据,每次发送 64 个字节。那么,USB CDC 的最大速度是 64kbyte/s 吗?而且这个速度远低于USB全速12Mbit/s。我怎样才能达到这个速度?或者至少是这个速度的一小部分?谢谢
FTDI 是否实现标准通信设备类 (CDC) USB 协议?
我需要在 STM32 上实现一个主机,以将设备连接到 FTDI 串行芯片。但谷歌搜索显示,使用 ST 的库时会出现问题。
是否有办法wal_level = logical在 Google Cloud Postgres 实例上启用逻辑复制?我想做 CDC(更改数据捕获)以将 WAL 记录流式传输到 Apache Kafka。感谢您的帮助!
postgresql replication cdc apache-kafka google-cloud-platform
cdc ×10
usb ×4
apache-kafka ×3
sql-server ×3
stm32 ×3
device ×1
embedded ×1
ftdi ×1
linux ×1
oracle ×1
oracle-cdc ×1
oracle11g ×1
postgresql ×1
replication ×1
rndis ×1
sql ×1