简而言之:我需要通过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版已经上市!
我正在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)
我的疑问是关于BITMAPFILEHEADER和BITMAPINFOHEADER。我怎样才能用给定的CBitmapor填充它们CDC?
我在 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,第 …
我有一个要求,我想在新添加的表列上启用CDC,但我无法禁用CDC并再次启用它.有什么办法可以实现吗?
我找到了一个解决方案,我可以将旧的CDC表值复制到临时表中,然后禁用CDC,然后使用新的表模式启用CDC.稍后将临时表值复制到新的CDC表中并更新LSN值.
而不是上面我需要一个解决方案,我可以在CDC启用时将新列包含在CDC表中.
我正在尝试在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) 我需要将数据从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 根本没有反应 - 有时它不考虑某些数据。 …
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。
我想使用以下代码 (AndroidStudio Chipmunk) 将 USB CDC 设备(FTDI 芯片或 CD2010 或定制芯片)连接到我的 Galaxy A12 (Android SDK 30):
\npublic 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) 如何通过运行 SQL 查询来检查 SQL Server 中的特定数据库和表是否启用了 CDC?
我有一个现有的HANA仓库,该仓库没有创建/更新时间戳。我需要生成许多夜间批处理增量文件,以发送到另一个平台。我的问题是如何检测哪些记录是新记录或已更改记录,以便可以在复制过程中捕获这些记录。
有没有办法使用HANA的内置功能来检测新记录/更改记录?
cdc ×10
sql-server ×3
usb ×3
android ×1
bitmap ×1
c ×1
cbitmap ×1
hana ×1
linux-kernel ×1
mfc ×1
rndis ×1
serial-port ×1
sql ×1
stm32 ×1
t-sql ×1
tty ×1
ubuntu ×1
usbserial ×1
visual-c++ ×1
windows ×1