프로그램을 실행하는 동안 라이브러리 고유 함수 OpenSSPComPortUSB()를 호출하면 \. \ COM208 포트를 열 수 없습니다. 왜 내가 PortNumber = 7을 전달했는지와 같이 \. \ COM208을 반환합니다. 아래 자바 코드와 내 목표는 hoper와 스마트 통신 직렬 통신을 시작하기 위해 포트 COM7을 여는 것입니다.포트를 열 수 없습니다
// AccessITLLib.java
public class AccessITLLib
{
public static class SSP_COMMAND extends Structure
{
SSP_FULL_KEY Key;
public NativeLong BaudRate;
public byte PortNumber;
public NativeLong Timeout;
public byte SSPAddress;
public byte RetryLevel;
public byte EncryptionStatus;
public byte CommandDataLength;
public byte[] CommandData = new byte[255];
public byte ResponseStatus;
public byte ResponseDataLength;
public byte[] ResponseData = new byte[255];
public byte IgnoreError;
}
public interface ITLLib extends Library
{
ITLLib INSTANCE = (ITLLib) Native.loadLibrary("ITLSSPproc",
ITLLib.class);
public int OpenSSPComPort(SSP_COMMAND p);
public int OpenSSPComPortUSB(SSP_COMMAND p);
public int CloseSSPComPort();
public int CloseSSPComPortUSB();
}
public static void main(String[] args)
{
SSP_COMMAND commandStruct = new SSP_COMMAND();
commandStruct.BaudRate = new NativeLong(9600);
commandStruct.PortNumber =7;
commandStruct.Timeout = 500;
commandStruct.RetryLevel = 3;
commandStruct.IgnoreError = 1;
commandStruct.SSPAddress =16;
ITLLib.INSTANCE.CloseSSPComPort();
ITLLib.INSTANCE.CloseSSPComPortUSB();
ITLLib.INSTANCE.OpenSSPComPort(commandStruct);
ITLLib.INSTANCE.OpenSSPComPortUSB(commandStruct);
}
}
here are the c structures
typedef struct{
SSP_FULL_KEY Key;
unsigned long BaudRate;
unsigned long Timeout;
unsigned char PortNumber;
unsigned char SSPAddress;
unsigned char RetryLevel;
unsigned char EncryptionStatus;
unsigned char CommandDataLength;
unsigned char CommandData[255];
unsigned char ResponseStatus;
unsigned char ResponseDataLength;
unsigned char ResponseData[255];
unsigned char IgnoreError;
}SSP_COMMAND;
typedef struct{
unsigned long long FixedKey;
unsigned long long EncryptKey;
}SSP_FULL_KEY;
귀하의 통신 속도는 64 비트 숫자가 아닙니다. 대신에'int' 또는'NativeLong'을 사용하십시오. 웹상의 다른 참고 문헌들은'PortNumber'가 JNA에서'byte' 필드를 필요로하는'char'이라는 것을 나타냅니다. 비교를 위해 C 헤더 파일에서 함수/구조체 선언을 가지고 있습니까? – technomage
구조체 파일 전송 속도가 길고 PortNumber가 JNA에서 char입니다. hava는 BaudRate를 NativeLong 및 PortNumber로 변경하지만 바이트는 변경되지 않습니다. –
이것은 바보 같은 질문 일 수 있지만 7 대신 포트 번호 6을 사용해 보셨습니까? 나는이 특정 API에 대해 아무것도 모르는 것이지만 포트 식별자의 숫자 식별자는 0이 아닌 1에서부터 계산됩니다. –