1、我现在添加了两个按键,分别对应读与写。void CHidmfcDlg::OnButton3()
{
// TODO: Add your control notification handler code here}void CHidmfcDlg::OnButton4()
{
// TODO: Add your control notification handler code here}我现在要做的工作 是把命令行的放到这两个函数中
原来的命令行程序如下:
int main(int argc, char **argv)
{
usbDevice_t *dev;
char buffer[17]; /* room for dummy report ID */
int err; if(argc < 2){
usage(argv[0]);
exit(1);
}
if((dev = openDevice()) == NULL)
exit(1); if(strcasecmp(argv[1], "read") == 0){
int len = sizeof(buffer);
if((err = usbhidGetReport(dev, 0, buffer, &len)) != 0){
fprintf(stderr, "error reading data: %s\n", usbErrorMessage(err));
}else{
hexdump(buffer + 1, sizeof(buffer) - 1);
}
} else if(strcasecmp(argv[1], "write") == 0){
int i, pos;
bzero(buffer, sizeof(buffer)); for(pos = 1, i = 2; i < argc && pos < sizeof(buffer); i++){
pos += hexread(buffer + pos, argv[i], sizeof(buffer) - pos);
}
if((err = usbhidSetReport(dev, buffer, sizeof(buffer))) != 0) /* add a dummy report ID */
fprintf(stderr, "error writing data: %s\n", usbErrorMessage(err));
}
else{
usage(argv[0]);
exit(1);
}
usbhidCloseDevice(dev);
return 0;
}
我看看了一下
就要就是两个函数了 我需要移植过来了
一个是
static void hexdump(char *buffer, int len)
{
int i;
FILE *fp = stdout; for(i = 0; i < len; i++){
if(i != 0){
if(i % 16 == 0){
fprintf(fp, "\n");
}else{
fprintf(fp, " ");
}
}
fprintf(fp, "0x%02x", buffer[i] & 0xff);
}
if(i != 0)
fprintf(fp, "\n");
}另一个是static int hexread(char *buffer, char *string, int buflen)
{
char *s;
int pos = 0; while((s = strtok(string, ", ")) != NULL && pos < buflen){
string = NULL;
buffer[pos++] = (char)strtol(s, NULL, 0);
}
return pos;
}
我会用的是
GetDlgItemText(IDC_EDIT2,b);
和
SetDlgItemText(IDC_EDIT3,b);请问 使用这两个函数能搞到嘛 谢谢。PS:原来命令行时支持的命令是:
To send a block to the device, use e.g. hidtool write 0x01,0x02,0x03,0x04,...and to receive the block, use hidtool read每次读取或写入的都是8个字节。2、命令行时的错误处理是使用fprintf(stderr, "error reading data: %s\n", usbErrorMessage(err));请问如果我在窗口mfc模式下时 想使用弹出对话框的方式实现,请问如何实现 谢谢。
PS: usbErrorMessage的函数原型如下:
static char *usbErrorMessage(int errCode)
{
static char buffer[80]; switch(errCode){
case USBOPEN_ERR_ACCESS: return "Access to device denied";
case USBOPEN_ERR_NOTFOUND: return "The specified device was not found";
case USBOPEN_ERR_IO: return "Communication error with device";
default:
sprintf(buffer, "Unknown USB error %d", errCode);
return buffer;
}
return NULL; /* not reached */
}
{
// TODO: Add your control notification handler code here}void CHidmfcDlg::OnButton4()
{
// TODO: Add your control notification handler code here}我现在要做的工作 是把命令行的放到这两个函数中
原来的命令行程序如下:
int main(int argc, char **argv)
{
usbDevice_t *dev;
char buffer[17]; /* room for dummy report ID */
int err; if(argc < 2){
usage(argv[0]);
exit(1);
}
if((dev = openDevice()) == NULL)
exit(1); if(strcasecmp(argv[1], "read") == 0){
int len = sizeof(buffer);
if((err = usbhidGetReport(dev, 0, buffer, &len)) != 0){
fprintf(stderr, "error reading data: %s\n", usbErrorMessage(err));
}else{
hexdump(buffer + 1, sizeof(buffer) - 1);
}
} else if(strcasecmp(argv[1], "write") == 0){
int i, pos;
bzero(buffer, sizeof(buffer)); for(pos = 1, i = 2; i < argc && pos < sizeof(buffer); i++){
pos += hexread(buffer + pos, argv[i], sizeof(buffer) - pos);
}
if((err = usbhidSetReport(dev, buffer, sizeof(buffer))) != 0) /* add a dummy report ID */
fprintf(stderr, "error writing data: %s\n", usbErrorMessage(err));
}
else{
usage(argv[0]);
exit(1);
}
usbhidCloseDevice(dev);
return 0;
}
我看看了一下
就要就是两个函数了 我需要移植过来了
一个是
static void hexdump(char *buffer, int len)
{
int i;
FILE *fp = stdout; for(i = 0; i < len; i++){
if(i != 0){
if(i % 16 == 0){
fprintf(fp, "\n");
}else{
fprintf(fp, " ");
}
}
fprintf(fp, "0x%02x", buffer[i] & 0xff);
}
if(i != 0)
fprintf(fp, "\n");
}另一个是static int hexread(char *buffer, char *string, int buflen)
{
char *s;
int pos = 0; while((s = strtok(string, ", ")) != NULL && pos < buflen){
string = NULL;
buffer[pos++] = (char)strtol(s, NULL, 0);
}
return pos;
}
我会用的是
GetDlgItemText(IDC_EDIT2,b);
和
SetDlgItemText(IDC_EDIT3,b);请问 使用这两个函数能搞到嘛 谢谢。PS:原来命令行时支持的命令是:
To send a block to the device, use e.g. hidtool write 0x01,0x02,0x03,0x04,...and to receive the block, use hidtool read每次读取或写入的都是8个字节。2、命令行时的错误处理是使用fprintf(stderr, "error reading data: %s\n", usbErrorMessage(err));请问如果我在窗口mfc模式下时 想使用弹出对话框的方式实现,请问如何实现 谢谢。
PS: usbErrorMessage的函数原型如下:
static char *usbErrorMessage(int errCode)
{
static char buffer[80]; switch(errCode){
case USBOPEN_ERR_ACCESS: return "Access to device denied";
case USBOPEN_ERR_NOTFOUND: return "The specified device was not found";
case USBOPEN_ERR_IO: return "Communication error with device";
default:
sprintf(buffer, "Unknown USB error %d", errCode);
return buffer;
}
return NULL; /* not reached */
}
解决方案 »
- 属性页定制 + 双缓冲位图显示 + 立体位图按钮制作
- 工程初始化时不知道需要多少个线程,如何在程序中根据需要创建N个线程?
- 刚学习VC 头疼中。。。
- CListCtrl (列表控件)的状态设置!!!!!!!!!!!
- 在线等待,求助。
- 下面这段程序在TC中运行很好,但在VC中就出现非法操作,不知为何?怎样才能解决呢?
- 一个奇怪的问题,请大家看一看,谢谢了
- 怎么样实现像vbsedit右边Object Browser那样的功能?
- heapalloc,globalalloc,virtualalloc,new的异同?
- 错误 100 error C2440: “static_cast”: 无法从“void (__thiscall CGameView::* )(int)”转换为“
- 关于Dialog中Toolbar的问题,Dialog上加一个Toolbar·,客户区刷新图片的时候,Toolbar就不见了
- vsto wordaddin 无法正常加载 LOADBEHAVIOR总是为2,开发机器可以运行而客户端机器却有问题?
MessageBox用来出错时弹出对话框
或者保存文件,将结果输出到哪里。
或者使用RichEdit,将结果输出到RichEdit中
或者AfxMessageBox,如果你能忍受不停弹出对话框的话。
+
CString::Format