Я использую сервер C ++ и несколько клиентов Python с zmq
(ZeroMQ) lib. Я хотел бы отправить float
и integer
клиентам.
Я прочитал руководство для zmq
, но у меня проблема с отправкой чего-либо еще, кроме char array
из кода C ++, который не может быть интерпретирован python
клиент как integer
или же float
,
Мой код C ++ выглядит так:
// Socket to talk to clients
void *context = zmq_ctx_new();
void *responder = zmq_socket(context, ZMQ_REP);
int rc = zmq_bind(responder, "tcp://*:5555");
int msg_cnt = 0;
while (1) {
char data[] = "M3:155";
sendCommand(responder, data);
}
static void sendCommand(void* r, char* cmd) {
static int n;
char buffer[10];
zmq_recv(r, buffer, 10, 0);
zmq_send(r, cmd, sizeof(cmd), 0);
std::cout << std::to_string(n++) << ". command sent." << std::endl;
Sleep(1);
}
И клиент Python выглядит примерно так:
context = zmq.Context()
# Socket to talk to server
print("Connecting to hello world server")
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:5555")
#print("Sending request %s ")
socket.send(b"I am here.")
# Get the reply.
message = socket.recv()
#message = b"M5:-"print("Received reply [%s]" % (message))
match = re.match(b'.*(M\d+):(\d+)', message)
print ("Command is: ", match.group())
print ("Motor: ", match.group(1))
print ("Target Angle: ", match.group(2))
Выход для питона:
Получил ответ [b'M3:155\x00\xcc']
Команда это: b'M3:155'
Мотор: b'M3'
Целевой угол: b'155'
Как я могу разобрать b'155'
как int
или же float
?
Заранее спасибо!
Эмм …
3>> float(b'155')
155.0
Других решений пока нет …