📄 portcontrol.java
字号:
}
/**
* Flush Async Server port input/output buffer data.
* @param mode which buffer to flush. 0: flush input buffer;
* 1: flush output buffer; 2: flush input/output buffer.
* @return 0 if successful ,otherwise -1.
*/
public short flush(byte mode) {
//System.out.println();
//System.out.println("Flush port " + IPofMoxa + ":" + PortofMoxa +
//" with mode " + mode + " ... ...");
byte[] CmdContent = new byte[8];
CmdContent[0] = PortControlOptions.D_COMMAND_FLUSH;
CmdContent[1] = 1;
CmdContent[2] = mode;
try {
CmdPortWriter.write(CmdContent, 0, 3);
}
catch (IOException ioe) {
System.out.println("Moxa port control - port flush error: " +
"io error occured.");
System.out.println(ioe.toString());
}
return WaitCmdResult(PortControlOptions.D_COMMAND_FLUSH);
}
/**
* Get Async Port line status.
* @return line status of this port. >=0: line status:
* bit 0: DSR, bit 1: CTS, bit 2: DCD (1 - ON, 0 - OFF)
* ; -1: error
*/
public short lstatus() {
//System.out.println();
//System.out.println("Get status of port " + IPofMoxa + ":" + PortofMoxa +
//" ... ...");
byte[] CmdContent = new byte[8];
short status = 0;
CmdContent[0] = PortControlOptions.D_COMMAND_LSTATUS;
CmdContent[1] = 0;
try {
CmdPortWriter.write(CmdContent, 0, 2);
}
catch (IOException ioe) {
System.out.println("Moxa port control - get line status error: " +
"io error occured.");
System.out.println(ioe.toString());
}
//return WaitCmdResult(PortControlOptions.D_COMMAND_LSTATUS);
byte[] reponseFromServer = new byte[8];
int sleeps = 0;
int StoredBytesNumber = 0;
while (true) {
try {
int ReceivedBytesNumber = CmdPortReader.available();
int BytesWaiting = 5;
short lstatus = 0;
if (ReceivedBytesNumber >= BytesWaiting) {
StoredBytesNumber = (byte) CmdPortReader.read(reponseFromServer, 0,
BytesWaiting);
/*
System.out.println("Response of command " +
PortControlOptions.D_COMMAND_LSTATUS + ": " +
reponseFromServer[0] + reponseFromServer[1] +
reponseFromServer[2] + reponseFromServer[3] +
reponseFromServer[4]);
*/
if ( (reponseFromServer[0] == PortControlOptions.D_COMMAND_LSTATUS) &&
(reponseFromServer[1] == 3)) {
if (reponseFromServer[3] == PortControlOptions.D_LSTATUS_CTS_ON) {
lstatus |= 2;
}
if (reponseFromServer[3] == PortControlOptions.D_LSTATUS_DCD_ON) {
lstatus |= 4;
}
return lstatus;
}
else {
return PortControlOptions.FAIL;
}
}
else {
Thread.sleep(PortControlOptions.INTERVAL);
if (sleeps++ > PortControlOptions.RETRY) {
return PortControlOptions.FAIL;
}
}
}
catch (IOException ioe) {
System.out.println(
"Moxa port control - Wait for command response error: " +
"io error occured.");
System.out.println(ioe.toString());
}
catch (InterruptedException ie) {
System.out.println(
"Moxa port control - Wait for command response error: " +
"sleep interrupted.");
System.out.println(ie.toString());
}
} //end of while
}
//Get port input buffer size.
public short iqueue() {
//System.out.println();
//System.out.println("Get input buffer size of port " + IPofMoxa + ":" + PortofMoxa +
// " ... ...");
byte[] CmdContent = new byte[8];
short status = 0;
CmdContent[0] = PortControlOptions.D_COMMAND_IQUEUE;
CmdContent[1] = 0;
try {
CmdPortWriter.write(CmdContent, 0, 2);
}
catch (IOException ioe) {
System.out.println("Moxa port control - get input buffer size error: " +
"io error occured.");
System.out.println(ioe.toString());
}
byte[] reponseFromServer = new byte[8];
int sleeps = 0;
int StoredBytesNumber = 0;
while (true) {
try {
int ReceivedBytesNumber = CmdPortReader.available();
int BytesWaiting = 4;
short iqueue = 0;
if (ReceivedBytesNumber >= BytesWaiting) {
StoredBytesNumber = (byte) CmdPortReader.read(reponseFromServer, 0,
BytesWaiting);
/*
System.out.println("Response of command " +
PortControlOptions.D_COMMAND_IQUEUE + ": " +
reponseFromServer[0] + reponseFromServer[1] +
reponseFromServer[2] + reponseFromServer[3]);
*/
if ( (reponseFromServer[0] == PortControlOptions.D_COMMAND_IQUEUE) &&
(reponseFromServer[1] == 2)) {
iqueue = reponseFromServer[3];
return iqueue;
}
else {
return PortControlOptions.FAIL;
}
}
else {
Thread.sleep(PortControlOptions.INTERVAL);
if (sleeps++ > PortControlOptions.RETRY) {
return PortControlOptions.FAIL;
}
}
}
catch (IOException ioe) {
System.out.println(
"Moxa port control - Wait for command(get input buffer size) response error: " +
"io error occured.");
System.out.println(ioe.toString());
}
catch (InterruptedException ie) {
System.out.println(
"Moxa port control - Wait for command(get input buffer size) response error: " +
"sleep interrupted.");
System.out.println(ie.toString());
}
}
}
//Get port output buffer size.
public short oqueue() {
//System.out.println();
//System.out.println("Get output buffer size of port " + IPofMoxa + ":" + PortofMoxa +
// " ... ...");
byte[] CmdContent = new byte[8];
short status = 0;
CmdContent[0] = PortControlOptions.D_COMMAND_OQUEUE;
CmdContent[1] = 0;
try {
CmdPortWriter.write(CmdContent, 0, 2);
}
catch (IOException ioe) {
System.out.println("Moxa port control - get output buffer size error: " +
"io error occured.");
System.out.println(ioe.toString());
}
byte[] reponseFromServer = new byte[8];
int sleeps = 0;
int StoredBytesNumber = 0;
while (true) {
try {
int ReceivedBytesNumber = CmdPortReader.available();
int BytesWaiting = 4;
short oqueue = 0;
if (ReceivedBytesNumber >= BytesWaiting) {
StoredBytesNumber = (byte) CmdPortReader.read(reponseFromServer, 0,
BytesWaiting);
/*
System.out.println("Response of command " +
PortControlOptions.D_COMMAND_OQUEUE + ": " +
reponseFromServer[0] + reponseFromServer[1] +
reponseFromServer[2] + reponseFromServer[3]);
*/
if ( (reponseFromServer[0] == PortControlOptions.D_COMMAND_OQUEUE) &&
(reponseFromServer[1] == 2)) {
oqueue = reponseFromServer[3];
return oqueue;
}
else {
return PortControlOptions.FAIL;
}
}
else {
Thread.sleep(PortControlOptions.INTERVAL);
if (sleeps++ > PortControlOptions.RETRY) {
return PortControlOptions.FAIL;
}
}
}
catch (IOException ioe) {
System.out.println(
"Moxa port control - Wait for command(get output buffer size) response error: " +
"io error occured.");
System.out.println(ioe.toString());
}
catch (InterruptedException ie) {
System.out.println(
"Moxa port control - Wait for command(get output buffer size) response error: " +
"sleep interrupted.");
System.out.println(ie.toString());
}
}
}
//--------------------Private mothods-------------------//
//Set PortReader and PortWriter.
//return: OK or FAIL
/*
private private short IOPreparation(Socket SocketMoxa) {
try {
CmdPortReader = SocketMoxa.getInputStream();
CmdPortWriter = SocketMoxa.getOutputStream();
}
catch (IOException ioe) {
System.out.println("Moxa port control - IO preparation error: " +
"io error occured.");
System.out.println(ioe.getMessage());
}
if (CmdPortReader != null && CmdPortWriter != null) {
return PortControlOptions.OK;
}
else {
CmdPortReader = null;
CmdPortWriter = null;
return PortControlOptions.FAIL;
}
} //end of method IOPreparation()
*/
/**
* Wait for response from command to moxa server.
* Successful response is cmd"OK".
* @param Cmd Command type defined in class PortControlOptions.
* @return 0 if successful otherwise -1.
*/
private short WaitCmdResult(short Cmd) {
byte[] reponseFromServer = new byte[8];
int sleeps = 0;
int StoredBytesNumber = 0;
while (true) {
try {
int ReceivedBytesNumber = CmdPortReader.available();
int BytesWaiting = 3;
if (ReceivedBytesNumber >= BytesWaiting) {
StoredBytesNumber = (byte) CmdPortReader.read(reponseFromServer, 0,
BytesWaiting);
short ReceivedCmdNumber = (short) reponseFromServer[0];
String ReceivedCmdResult = new String(reponseFromServer,
BytesWaiting - 2,
BytesWaiting - 1);
//System.out.println("Response of command " + Cmd + ": " +
// ReceivedCmdNumber + ReceivedCmdResult);
if ( (ReceivedCmdNumber == Cmd) && (ReceivedCmdResult.equals("OK"))) {
return PortControlOptions.OK;
}
else {
return PortControlOptions.FAIL;
}
}
else {
Thread.sleep(PortControlOptions.INTERVAL);
if (sleeps++ > PortControlOptions.RETRY) {
return PortControlOptions.FAIL;
}
}
}
catch (IOException ioe) {
System.out.println(
"Moxa port control - Wait for command response error: " +
"io error occured.");
System.out.println(ioe.toString());
}
catch (InterruptedException ie) {
System.out.println(
"Moxa port control - Wait for command response error: " +
"sleep interrupted.");
System.out.println(ie.toString());
}
} //end of while
} //end of mothod WaitCmdResult()
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -