⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serialbuffer.java.bak

📁 用java实现串口通信 用java实现串口通信
💻 BAK
字号:
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(10);   //延时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 + -