标签: cdc

如何在Visual C++中列出所有连接的USB设备

简而言之:我需要通过PID/VID检测我的USB CDC设备的热插拔事件,并获取由Windows在Visual C++中创建的相应虚拟COM端口,最后创建一个dll.

我有一个USB CDC设备,我需要在Windows上连接/断开连接时收到通知.我的方法是使用RegisterDeviceNotification和"隐形"窗口来接收WM_DEVICECHANGE通知.到目前为止这部分工作正在进行

现在据我所知,我需要获取插入的USB设备列表,迭代它并使用我的PID/VID过滤掉设备?我假设我能够获得有关该设备的更多信息,包括COM端口?

是实现我使用SetupDi呼叫的目标的唯一方法setupapi.h吗?使用WDK/DDK是实现目标的唯一途径吗?

一旦工作,我就在http://github.com/vinzenzweber/USBEventHandler上开源.Mac版已经上市!

windows usb cdc visual-studio visual-c++

3
推荐指数
1
解决办法
7900
查看次数

将 CBitmap 保存到 .bmp 文件

我正在CBitmap使用CDC. 当我完成它时,我想将它保存到一个文件中。我已经看到有关该代码LINK的进程的一些信息:

CFile file;
if(file.Open(szFileName, CFile::modeCreate | CFile::modeWrite))
{ 
    file.Write(&bh, sizeof(BITMAPFILEHEADER));
    file.Write(&(bi.bmiHeader), sizeof(BITMAPINFOHEADER));
    file.Write(lpBitmapBits, 3 * nWidth * nHeight);
    file.Close();
}
Run Code Online (Sandbox Code Playgroud)

我的疑问是关于BITMAPFILEHEADERBITMAPINFOHEADER。我怎样才能用给定的CBitmapor填充它们CDC

mfc bitmap cdc cbitmap

3
推荐指数
1
解决办法
3335
查看次数

SQL Server 2012 更改数据捕获错误 14234

我在 SQL Server 2012 实例上设置更改数据捕获时遇到问题。每当我尝试在表上启用 CDC 时,我都会收到以下错误:

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

服务器的名称没有改变,我尝试了sp_dropserver /sp_addserver解决方案并收到以下错误:

消息 15015,级别 16,状态 1,过程 sp_dropserver,第 42 行
服务器“ServerName”不存在。使用 sp_helpserver 显示可用的服务器。

消息 15028,级别 16,状态 1,过程 sp_addserver,第 74 行
服务器“ServerName”已存在。

正如我所说,我正在尝试设置 CDC 而不是复制。SQL Server 的版本为:11.0.5058.0(SQL Server 2012 SP2)

在表级别启用 CDC 时查看了Error并尝试了该解决方案。

我也试过:

exec sys.sp_cdc_add_job @job_type = N'capture'
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

消息 22836,级别 16,状态 1,过程 sp_cdc_add_job_internal,第 …

sql-server cdc change-data-capture

3
推荐指数
2
解决办法
4186
查看次数

如何在新添加的基础表列上激活更改数据捕获(CDC),而不禁用CDC

我有一个要求,我想在新添加的表列上启用CDC,但我无法禁用CDC并再次启用它.有什么办法可以实现吗?

我找到了一个解决方案,我可以将旧的CDC表值复制到临时表中,然后禁用CDC,然后使用新的表模式启用CDC.稍后将临时表值复制到新的CDC表中并更新LSN值.

而不是上面我需要一个解决方案,我可以在CDC启用时将新列包含在CDC表中.

sql sql-server cdc

3
推荐指数
1
解决办法
4171
查看次数

在Ubuntu中连接USB规模,cdc_acm说无法设置dtr / trs

我正在尝试在Linux(Ubuntu)中连接秤(Dibal系列400),但无法成功。安装了启用虚拟Com端口的驱动程序后,该秤可以在Windows上运行,但是当我在Linux上插入秤时,它会尝试启动,但是一段时间后,秤会关闭。

sys日志消息显示:

kernel: [ 3202.896355] usb 1-2: new full-speed USB device number 8 using xhci_hcd
kernel: [ 3203.038395] usb 1-2: New USB device found, idVendor=0483, idProduct=5740
kernel: [ 3203.038400] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
kernel: [ 3203.038403] usb 1-2: Product: Dibal G Series
kernel: [ 3203.038405] usb 1-2: Manufacturer: DIBAL S.A
kernel: [ 3203.038407] usb 1-2: SerialNumber: 00000000001A
kernel: [ 3203.039349] cdc_acm 1-2:1.0: ttyACM0: USB ACM device
mtp-probe: checking bus 1, device 8: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2"
mtp-probe: bus: …
Run Code Online (Sandbox Code Playgroud)

usb ubuntu serial-port cdc tty

3
推荐指数
1
解决办法
5973
查看次数

STM32 USB CDC 长包接收

我需要将数据从PC发送到我的STM32F3,所以我决定使用uC中的内置USB。但现在我有一个问题 - 我想一次向 stm32 发送大量数据 - 我的意思是 200-500 字节之类的数据。

当我从 PC 发送少于 64 个图表的 minicom 数据包时 - 一切都很好 - 回调 CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) 发生一次 - 它启用 UsbRxFlag,只是为了通知正在运行的程序有可用数据。

static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
{
  /* USER CODE BEGIN 6 */
  USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);
  USBD_CDC_ReceivePacket(&hUsbDeviceFS);
  if( (Buf[0] == 'A') & (Buf[1] == 'T') ){
      GPIOB->BSRR = (uint32_t)RX_Led_Pin;
      UsbRxFlag = 1;
  }

  return (USBD_OK);
  /* USER CODE END 6 */
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试向 uC 发送更多数据(只是来自 minicom 的长文本)时,会发生一些奇怪的事情 - 有时 uC 根本没有反应 - 有时它不考虑某些数据。 …

c usbserial cdc stm32

3
推荐指数
1
解决办法
7829
查看次数

linux cdc_ecm 驱动程序与 rndis 驱动程序

linux cdc_ecm 驱动程序与 rndis 协议有何关系?cdc_ecm 是否基于微软的 rndis 规范?

从这个维基页面https://en.wikipedia.org/wiki/RNDIS

USB 实施者论坛 (USB-IF) 定义了至少三个具有类似“虚拟以太网”功能的非专有 USB 通信设备类 (USB CDC) 协议;其中之一 (CDC-ECM) 早于 RNDIS,并广泛用于与非 Microsoft 操作系统的互操作性,但不适用于 Windows。

似乎cdc_ecm基于microsoft rndis。

cdc linux-kernel rndis

3
推荐指数
1
解决办法
7100
查看次数

AndroidStudio USB:EXTRA_PERMISSION_GRANTED 返回 false - 始终

我想使用以下代码 (AndroidStudio Chipmunk) 将 USB CDC 设备(FTDI 芯片或 CD2010 或定制芯片)连接到我的 Galaxy A12 (Android SDK 30):

\n
public class MainActivity extends AppCompatActivity {\npublic static final String ACTION_USB_PERMISSION = "com.example.usbtestapp.USB_PERMISSION";\nstatic final int intentFlags = (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) ? PendingIntent.FLAG_IMMUTABLE : 0;\nstatic final int MY_CAMERA_PERMISSION_CODE  = 100;\nprivate Context ContextofMainAcitivity;\npublic IntentFilter USBconnectdisconnect_intentFilter;\npublic Intent GetEXTRA_PERMISSION_GRANTEDIntent;\npublic PendingIntent current_usbpermissionIntent;\npublic UsbDevice current_usbdevice;\npublic UsbManager current_usbManager;\nprivate static final String TAG = "usbtestapp";\n@Override\nprotected void onCreate(Bundle savedInstanceState) {\n    super.onCreate(savedInstanceState);\n    setContentView(R.layout.activity_main);\n    ContextofMainAcitivity = this;\n    current_usbManager = (UsbManager)getSystemService(Context.USB_SERVICE);\n    USBconnectdisconnect_intentFilter = new IntentFilter();\n    USBconnectdisconnect_intentFilter.addAction(ACTION_USB_PERMISSION);\n    USBconnectdisconnect_intentFilter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);\n …
Run Code Online (Sandbox Code Playgroud)

usb android cdc

3
推荐指数
1
解决办法
1619
查看次数

通过查询检查SQL Server中的数据库和表是否启用了CDC

如何通过运行 SQL 查询来检查 SQL Server 中的特定数据库和表是否启用了 CDC?

t-sql sql-server cdc

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

正在检测增量记录以进行夜间捕获?

我有一个现有的HANA仓库,该仓库没有创建/更新时间戳。我需要生成许多夜间批处理增量文件,以发送到另一个平台。我的问题是如何检测哪些记录是新记录或已更改记录,以便可以在复制过程中捕获这些记录。

有没有办法使用HANA的内置功能来检测新记录/更改记录?

cdc change-data-capture database-replication hana

2
推荐指数
1
解决办法
3851
查看次数