ros学习之modbus-rtu读写饲服电机数据
首先你得找到电机的端口号和波特率 ,然后声明句柄
部分代码(只写了一个电机的代码,第二个同理)
modbus_t *mb=NULL;
uint16_t mbbuf[10];//存放数据,可以根据你读取的数据字节,调节数组。
std::string connection_port = "";
int main(int argc, char **argv)
{
ROS_INFO("scaning available port");
bool is_connected = false;
if(!(mb=modbus_new_rtu("/dev/ttyUSB0",19200,'N',8,1))) //声明modbus的句柄
{
if(modbus_set_slave(mb,1)==-1)//设置从机位置
{
modbus_free(mb);
}
if(modbus_connect(mb)==-1)
{
modbus_free(mb);
}
modbus_set_response_timeout(mb,0,200000);//设置超时时间
int m_en = modbus_write_register(mb,0,1);//modbus使能
if(modbus_read_registers(mb,0,15,mbbuf)==1)//读取该地址中的数据。
{
connection_port = "/dev/ttyUSB0";