Sending hex from matlab to longer pump device
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Mathieu
el 3 de Mzo. de 2023
Comentada: Mathieu
el 19 de Jul. de 2023
Hello everybody
First of all, I am a beginner in communication protocols
I recently started to try to control LongerPump BT1002J with matlab. I'm able to control it with a special software (pictures 1), everything works
I would like to use Matlab to be able to send the same thing to my device, but I think the format of the pin in not correct and the pump seems to not understand what I am sending to it.
I used the folowing code:
clear all
instrreset
s = serialport('COM6',1200);
fopen (s)
Str = 'E9 01 06 57 4A 00 0A 01 01 10';
D = sscanf(Str, '%2x');
fwrite(s, D, 'uint8')
I tried to remove blanks between E9 01 etc, but it is not effective. The line is sent ( I can see it with my RS485 converter, the led lights up.
Can anyone could correct the mistake in this code please?
Thank you for your help
10 comentarios
Walter Roberson
el 7 de Mzo. de 2023
Well, let us do a test:
Str = 'E9 1F 06 57 4A 00 0A 01 01 0E';
D = sscanf(Str, '%2x').'
filename = tempname + ".txt";
%write process you are using now
fid = fopen(filename, 'w');
fwrite(fid, D, 'int8');
fclose(fid);
fid = fopen(filename, 'r');
stored = fread(fid, [1 inf], 'uint8');
fclose(fid);
disp(stored)
%write process with greater certainty
D2 = typecast(uint8(D), 'int8');
fid = fopen(filename, 'w');
fwrite(fid, D2, 'int8');
fclose(fid);
fid = fopen(filename, 'r');
stored = fread(fid, [1 inf], 'uint8');
fclose(fid);
disp(stored)
This suggests that your use of write() with 'int8' is equivalent to first doing int8(D) and writing the result -- which is not going to work because some of your values are greater than 127. The type specification you use in write() or fwrite() does not do a typecast() of the data, it does a cast() of the data
Respuesta aceptada
Daniele Sportillo
el 21 de Mzo. de 2023
Movida: Walter Roberson
el 30 de Mzo. de 2023
Hi,
this should work
s = serialport('COM8',1200,'Parity','Even','DataBits',8,'StopBits',1); %open the serial port
Str = 'E9 1F 06 57 4A 00 0A 01 01 0E';
D = sscanf(Str, '%2x').';
write(s,D,"uint8");
1 comentario
Más respuestas (2)
JOUDI ARMOUCH
el 19 de Mayo de 2023
If its possible, can I know which software you used in picture 1?
5 comentarios
JOUDI ARMOUCH
el 15 de Jun. de 2023
Thank you for your answer and time, really appreciated..
I have a project related to this type of longerPump, if you do not mind can I have a way to communicate with you and ask some questions.
Florian Mueller
el 11 de Jul. de 2023
Dear Mathieu,
I also try to use a Longer pump ... and failed.
Would you mind sharing what software you used (and maybe you have a better user manual than I found).
Thanks a lot already!
5 comentarios
Florian Mueller
el 18 de Jul. de 2023
Mathieu, THANK YOU.
Thanks to this thread and all the replies, I finally managed to get this to work ... Longer pumps are nice and cheap, but the documentation is not very clear.
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!