//打开设备
int ctUsb_open(int devId)
{
int handle = -1;
CTUsbMsg msg;
int msglen, incnt;
memset(&msg, 0, sizeof(msg));
snprintf(msg.msgData, sizeof(msg.msgData), "OPEN");
msg.msgLen = strlen(msg.msgData) + sizeof(devId);
memcpy(&msg.msgData[4], &devId, sizeof(devId));
int xreason;
handle = ctUsb_connect(USB_ADMIN_DATA_PORT);
if (handle > 0)
{
write(handle, &msg, msg.msgLen + sizeof(msg.msgLen));
incnt = ctUsb_msgRecive(handle, &msglen, sizeof(msglen));
if (incnt > 0)
{
ctUsb_msgRecive(handle, &xreason, msglen);
}
}
g_errno = xreason;
return handle;
}
//创建socket连接
static int ctUsb_connect(int portNum)
{
int sockfd, addrsize;
struct sockaddr_in seraddr;
memset(&seraddr, 0, sizeof(seraddr));
seraddr.sin_family = AF_INET;
seraddr.sin_port = htons(portNum);
seraddr.sin_addr.s_addr = inet_addr("127.0.0.1");
addrsize = sizeof(struct sockaddr_in);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
{
printf("could not create socket\n");
}
if (connect(sockfd, (struct sockaddr*)&seraddr, addrsize) == -1)
{
printf("could not connect usbAdmin\n");
close(sockfd);
sockfd = -1;
}
return sockfd;
}
/**
* 配置设备属性
* @param handle(IN)
* @param request(IN)
* @param arg(IN/OUT)
* @param reason(OUT)
* @return Result
*/
int ctUsb_ioctl(int handle, int request, void *arg, int arglen)
{
CTUsbMsg msg;
int len, xreason, n;
int requestx = request;
memset(&msg, 0, sizeof(msg));
snprintf(msg.msgData, sizeof(msg.msgData), "IOCTL");
len = strlen(msg.msgData);
memcpy(&msg.msgData[len], &requestx, sizeof(requestx));
memcpy(&msg.msgData[len + 4], &arglen, sizeof(arglen));
if (arg != NULL)
{
memcpy(&msg.msgData[len + 8], arg, arglen);
}
msg.msgLen = 5 + sizeof(requestx) + arglen;
write(handle, &msg, msg.msgLen + sizeof(msg.msgLen));
n = ctUsb_msgRecive(handle, &len, sizeof(len));
if (n > 0)
{
ctUsb_msgRecive(handle, (char*)arg, len);
}
n = ctUsb_msgRecive(handle, &len, sizeof(len));
if (n > 0)
{
ctUsb_msgRecive(handle, &xreason, len);
}
g_errno = xreason;
return 0;
}
为了方便理解,我用java写一个调用的方法:
public static void main(String[] args){
int handle=open(devcId);//创建socket连接 此处handle是什么意思,接着调用ctUsb_ioctl方法要把此handle 传给 ctUsb_ioctl方法,(我自己的理解表示socket对象,但在java中要 怎么用int 类型的变量代表一个socket对象呢)
ctUsb_ioctl(handle,......)//
}
请大家帮忙给分析一下 C的程序流程,考虑用java如何实现!!!先拜谢了!!
相关推荐
这通常需要使用Java的Swing或JavaFX库来构建。用户可以输入一组数字,点击“快速排序”按钮进行排序,然后输入要查找的值,点击“折半查找”按钮进行搜索,结果会显示在界面上。 总的来说,快速排序和折半查找是...
10. **题目:** 在当前的java实现中,每个编译单元就是一个以()为后缀的文件 - A. java - B. class - C. doc - D. exe **解析:** Java源代码文件的后缀是.java。这些源代码文件经过编译后会生成.class文件,...
### C语言程序设计知识点解析 #### 一、输出指定格式的信息 **题目**: 编写一个C程序,输出以下信息: ``` ************************** Very Good! ************************** ``` **解析**: 1. **函数**: `main...
实验七 Java多线程 一、实验目的: 熟悉利用Thread类建立多线程方法。 熟悉利用Thread接口建立多线程方法...通过将扩展Thread类建立多线程的方法改为利用Runnable接口的方法,掌握通过Runnable接口建立多线程的方法。
标题提到的"java实现的日期操作类"通常指的是使用这些类来完成特定的日期计算任务,如获取星期几或计算未来的日期。 `java.util.Date`是Java早期用来表示日期和时间的类,但它的API设计并不理想,易用性较差。因此...
Java基于UDP协议的聊天程序是一种实现网络通信的应用实例,它利用了无连接的用户数据报协议(User Datagram Protocol,简称UDP)进行数据传输。在这个完整版的程序中,开发者已经完成了从设计到调试的全部过程,使其...
【Java程序设计上机实验】 实验1主要涵盖了Java的基础知识,包括环境配置、程序结构、条件判断和数学函数的使用。...通过这些实验,学生将全面了解Java程序设计的基础和实践,为后续的高级编程概念打下坚实基础。
(2) **编译Java源程序**:使用Java编译器(`javac.exe`)编译Java源程序,生成`.class`字节码文件。 (3) **运行Java程序**:使用Java解释器(`java.exe`)运行Java程序。 **3. Java源文件由什么组成?** Java...
1.9 指出下列内容哪些是JAVA语言的整型常量,哪些是浮点数类型常量,哪些两者都不是。 6 第二章 运算和语句 7 2.1 Java的字符能参加算术运算吗? 7 2.2 占字节多的变量能直接赋值给占字节少的变量么? 7 2.3 试用...
Java3D 实现三维显示 Java3D 是基于 Java 平台的三维技术,用于实现三维显示。Java3D 提供了基于 Java 的上层接口,使 3D 技术变得不再繁琐,并且可以加入到 J2SE、J2EE 的整套架构。Java3D 建立在 JAVA2(JAVA1.2)...
能用方法嵌套调用解决相对比较复杂的问题,如十进制整数转换成十六进制数问题。 在定义方法时,一个方法内不能再定义另一个方法,即不能嵌套定义,但是在调用一个方法的过程中,还可以调用另一个方法,这是方法的...
(4)Point3D有一个void型成员方法offset(int a, int b,int c),该方法可以实现Point3D的平移。 (5)在Point3D中的主函数main()中实例化两个Point2D的对象p2d1,p2d2,打印出它们之间的距离,再实例化两个Point2D的对象...
- 选项:(A) Java面向对象语言容许单独的过程与函数存在 (B) Java面向对象语言容许单独的方法存在 (C) Java语言中的方法属于类中的成员(member) (D) Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数...
10. **题目:** 在当前的java实现中,每个编译单元就是一个以()为后缀的文件 - **答案:** A. java **解析:** Java源代码文件通常以`.java`作为后缀。 **二、填空题解析** 1. **题目:** 1991年,SUN公司的Jame...
另一种实现是利用Java的`Arrays.sort()`方法对数组进行排序,然后直接返回最后一个元素,即为最大值。 - `printSecond`方法:这个方法需要找出数组中第二大的数。一种方法是在找到最大值后,再次遍历数组,找出比...
从给定的文件信息来看,这是一份针对Java技术的面试题库,涵盖了单选题、填空题、代码分析题以及编程题等不同类型的题目,旨在全面考察应聘者对Java语言及其应用环境的理解和掌握程度。下面我们将深入解析这份资料中...
- 编写一个程序,实现将一个字符串按指定字符分割并统计各个子字符串出现的次数。 - 示例输入:`"apple,orange,banana,apple,grape,orange"` - 示例输出:`apple: 2, orange: 2, banana: 1, grape: 1` - **解题...