📄 serialbuffer.java
字号:
package communication;
/**
* This class implements the buffer area to store incoming data from the serial
* port.
*/
public class SerialBuffer
{
private String Content = "";
private String CurrentMsg, TempContent;
private boolean available = false;
private int LengthAlready =0;
/**
* This function returns a string with a certain length from the incomin
* messages.
* @param Length The length of the string to be returned.读取length个字符 赋给Msg
*/
public synchronized String GetMsg()
{
//LengthNeeded = Length;
//if (LengthNeeded > Content.length())
//{
//available = false;
//while (available == false)
//{
try
{
wait();
//for(int i=0;i<30000000;++i)//<20000000出现乱码!!!!!!!!!!!!!!!!!不稳定!!随着进程数而变化!!
// ;
//break;
} catch (InterruptedException e) {System.out.println("SerialBuffer.GetMsg() is not waiting"); }
//}
//}
CurrentMsg = Content.substring(0,LengthAlready);
//TempContent = Content.substring(LengthAlready);
//str=str.substring(int beginIndex);截取掉str从首字母起长度为beginIndex的字符串,将剩余字符串赋值给str;
//str=str.substring(int beginIndex,int endIndex);截取str中从beginIndex开始至endIndex-1结束时的字符串,并将其赋值给str;
Content = "";
LengthAlready = 0;
notifyAll();
return CurrentMsg;
}
public synchronized String GetSearch()
{
//available = false;
// while (available == false)
// {
//for(int i=0;i<90000000;++i)//<20000000出现乱码!!!!!!!!!!!!!!!!!不稳定!!随着进程数而变化!!
try{
wait(50); //延时0.1秒
}catch(InterruptedException e){}
//break;
// }
CurrentMsg = Content.substring(0,LengthAlready);
Content = "";//清空缓冲区
LengthAlready = 0;
notifyAll();
//System.out.println("CurrentMsg: "+CurrentMsg);
return CurrentMsg;
}
/**
* This function stores a character captured from the serial port to the
* buffer area.
* @param t The char value of the character to be stored.
*/
public synchronized void PutChar(int c)
{
Character d = new Character((char) c);
//System.out.println((int)c);
Content = Content.concat(d.toString());
//System.out.println(Content);
++LengthAlready;
//收到回车符,表一段信息提取完毕,这时才能读出该信息
if (c==0x0d)
{
//available = true;//修改available,V,P标志(操作系统,控制并发)
//System.out.println("true");
notifyAll();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -