Попытка связаться с DMC20xx через интерфейс USB NET2888 - PullRequest
1 голос
/ 23 февраля 2020

Я пытаюсь связаться с контроллером движения galil DMC2070 через интерфейс USB. Интерфейс USB DMC2070 выполнен с чипом NET2888, но он не поддерживается windows 7 или 10. В настоящее время я загружаю драйвер winusb и пытаюсь установить с ним связь с libusb-1.0 (статически связанная 32-битная версия) и компилировать с mingw32-g cc под windows 10 (64 бита). Мне удалось запросить интерфейс, но я не мог отправлять или получать сообщения. Вот моя тестовая программа:

#include <cstring>
#include <stdio.h>
#include "libusb/libusb.h"

int main(){
 char entry;
 libusb_context *context = nullptr;
 int status, nwrite;
 unsigned char buffer[64] = "TP\0";
 libusb_device_handle *handle = nullptr;

 printf("start usb test (y/n) ?");
 scanf("%c", &entry);
 if(entry=='n') return 0;

 libusb_init(&context);
 handle = libusb_open_device_with_vid_pid(context, 0x06B3, 0x07D1);
 if(handle){
    printf("Device %04x:%04x opened with success\n",0x06B3,0x07D1);
 }
 else {
    libusb_exit(nullptr);
    printf("device %04x:%04x not found\n",0x06B3,0x07D1);
    system("pause");
    return 1;
 }

 libusb_set_auto_detach_kernel_driver(handle, 1);
 status = libusb_claim_interface(handle,0);
 if(status!=0){
    libusb_close(handle);
    libusb_exit(nullptr);
    fprintf(stderr, "usb_claim_interface error %d\n", status);
    system("pause");
    return 2;
 }
 printf("Interface claimed successfully\n");

 status = libusb_bulk_transfer(handle, USB_ENDPOINT_OUT,
        buffer, 64, &nwrite, TIMEOUT);
 if(status==0) printf("send %d bytes to device\n", nwrite);
 else printf("error %d, writing to device\n", status);

 libusb_release_interface(handle,0);
 libusb_close(handle);
 libusb_exit(nullptr);

 system("pause");
 return 0;
}

Вот итоговый результат:

start usb test (y/n) ?y
Device 06b3:07d1 opened with success
Interface claimed successfully
error -5, writing to device

Ошибка -5 соответствует LIBUSB_ERROR_NOT_FOUND, что означает «Объект не найден».

Я не привык иметь дело с интерфейсом USB напрямую, и надеюсь, что кто-то с гораздо большим опытом может пролить свет на мой путь. Я думаю об установке виртуальной машины с windows xp и попробуйте поменять драйвер.

...