select 实现对串口的读取

int  SerialPort::read_port(char *buf)
{
	int  result = 0;
	fd_set  rset;
	struct timeval timeout;
    timeout.tv_sec = 1;
    timeout.tv_usec = 100;

	FD_ZERO(&rset);
    FD_SET(fd, &rset);
    if(select(fd+1, &rset, NULL, NULL, &timeout) > 0)
	{
	    if (FD_ISSET(fd, &rset)) {
		    result = ::read(fd, buf, 100);				         	
        }
	}

    return result;
}


int  SerialPort::write_port(char *buf, unsigned len)
{
	int result = write(fd, buf, len);
	// Wait until all data has been written
	tcdrain(fd);

	return result;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DS18B20是一种数字温度传感器,它可以通过1-Wire总线进行通信。下面是一些基本的步骤来实现DS18B20的读取: 1. 初始化1-Wire总线,并搜索连接的DS18B20传感器。 2. 发送读取温度命令到DS18B20传感器。 3. DS18B20传感器发送响应,包含16位的温度数据。 4. 将接收到的16位温度数据转换成实际温度值,并进行必要的单位转换。 这里是一个示例代码,演示如何使用Arduino来读取DS18B20传感器的温度: ``` #include <OneWire.h> // 定义DS18B20的引脚 const int DS18B20_PIN = 2; OneWire oneWire(DS18B20_PIN); void setup() { Serial.begin(9600); } void loop() { byte data[2]; float temperature; // 发送读取温度命令到DS18B20传感器 oneWire.reset(); oneWire.select(DS18B20_PIN); oneWire.write(0x44); // 等待DS18B20传感器完成温度转换 delay(1000); // 读取DS18B20传感器发送的温度数据 oneWire.reset(); oneWire.select(DS18B20_PIN); oneWire.write(0xBE); // 获取DS18B20传感器发送的16位温度数据 for (byte i = 0; i < 2; i++) { data[i] = oneWire.read(); } // 将16位温度数据转换成实际温度值 int rawTemperature = (data[1] << 8) | data[0]; temperature = (float)rawTemperature / 16.0; // 输出温度值 Serial.print("Temperature = "); Serial.print(temperature); Serial.println(" Celsius"); delay(1000); } ``` 在上面的代码中,我们首先初始化了1-Wire总线,并使用`OneWire`库定义了一个`oneWire`对象。然后在`setup()`函数中初始化串口通信,并在`loop()`函数中执行以下操作: 1. 发送读取温度命令到DS18B20传感器,等待1秒钟。 2. 发送读取温度数据命令到DS18B20传感器,读取16位温度数据。 3. 将16位温度数据转换成实际温度值。 4. 输出温度值。 上面的代码仅作为参考,具体的实现可能因硬件和软件环境而异。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值