Hallo,
ich habe eine vorhandene C++ Library zum steuern eines Radios über /dev/ttyACM0 mit einem Android Arm Toolchain erfolgreich erstellt. Das Testprogramm rufe ich über ein Terminal auf und das funktioniert auch. Ich möchte jetzt gerne die Library mit Java ansprechen, um das Radio mit einer Android App benutzerfreundlich zu steuern.
Wie kann ich das am besten tun ?
Radiolibrary.cpp :
C
		
					
			BOOL OpenRadioPort(LPCSTR port, BOOL usehardmute)
{
#ifdef _DEBUG
	AllocConsole();
#endif
#ifdef WIN32
	if(!hSerial)
		hSerial = CreateFileA(port, GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0);
	
	if (hSerial == INVALID_HANDLE_VALUE)
		return false;
	else
	{
		DCB dcbSerialParams ={0};
		dcbSerialParams.DCBlength =  sizeof(DCB);
		if (!GetCommState(hSerial, &dcbSerialParams))
			return false;
		dcbSerialParams.BaudRate=CBR_57600;
		dcbSerialParams.ByteSize=8;
		dcbSerialParams.StopBits=ONESTOPBIT;
		dcbSerialParams.Parity=NOPARITY;
		dcbSerialParams.fRtsControl=0;
		dcbSerialParams.fDtrControl=0;
		if (!SetCommState(hSerial, &dcbSerialParams))
		{
			DWORD er=GetLastError();
			return false;
		}
		
		COMMTIMEOUTS timeouts={0};
		timeouts.ReadIntervalTimeout=10;
		timeouts.ReadTotalTimeoutConstant=10;
		timeouts.ReadTotalTimeoutMultiplier=10;
		timeouts.WriteTotalTimeoutConstant=10;
		timeouts.WriteTotalTimeoutMultiplier=10;
		if (!SetCommTimeouts(hSerial, &timeouts))
			return false;
		bUseHardMute=usehardmute;
		if (usehardmute)
			HardMute();
		else
			HardUnMute();
#endif
#ifdef __linux__
	struct termios options;
#ifdef _LINUXDEBUG
	wprintf(L"Open radio port %s\n", port);
#endif
	if(hSerial<1)
		hSerial = open(port, O_RDWR | O_NOCTTY | O_NDELAY);
	if (hSerial == -1)
	{
		perror("open_port: Unable to open radio port\n");
		return false;
	}
	else
	{
		fcntl(hSerial, F_SETFL, 0);
		tcgetattr(hSerial, &options);
		cfsetispeed(&options, B57600);
		cfsetospeed(&options, B57600);
		options.c_cflag |= (CLOCAL | CREAD);
		options.c_cflag &= ~PARENB;
		options.c_cflag &= ~CSTOPB;
		options.c_cflag &= ~CSIZE;
		options.c_cflag |= CS8;
		options.c_cflag &= ~CRTSCTS;
		/* set raw input, 1 second timeout */
		options.c_lflag     &= ~(ICANON | ECHO | ECHOE | ISIG );
		options.c_iflag &= ~(IXON | IXOFF | IXANY | ICRNL);
		options.c_oflag     &= ~OPOST;
		options.c_cc[VMIN]  = 0;
		options.c_cc[VTIME] = 1;
		/* set the options */
		tcsetattr(hSerial, TCSANOW, &options);
		ResetHigh();
		ClearInputBuffer();
		//HardResetRadio();
		bUseHardMute=usehardmute;
		if (usehardmute)
			HardMute();
		else
			HardUnMute();
#endif
		Sleep(800);
		if(!IsSysReady())
		{
			for (int i=0;i<2;i++)
			{
				if(HardResetRadio())
				{
					for(int x=0;x<2;x++)
					{
						if(IsSysReady())
						{
							TotalProgram = GetTotalProgram();
							return true;
						}
					}
				}
			}
			return false;
		}
		else		
		{
			TotalProgram = GetTotalProgram();
			return true;
		}
	}
}
BOOL CloseRadioPort(void)
{
#ifdef WIN32
	if (hSerial) CloseHandle(hSerial);
#endif
#ifdef __linux__
	if (hSerial) close(hSerial);
#endif
	hSerial=NULL;
	return true;
}
	
			Alles anzeigen
	RadioLibrary.h:
Testprogramm.cpp :