Hi, also ich hab es jetzt soweit hinbekommen dass ich senden kann.
Irgnedwie ragiert aber mein Mikrocontroller viel zu langsam auf die
Befehle.
Ich hab gemerkt das Matlab die Daten irgendwie Puffert und dann Stück
für Stück weitergibt. Also der Flashenhals ist (glaube ich zu mindest)
bei Matlab. Breche ich die While-Schleiche ab bewegt sich mein Motor
immer noch.
Ich hab jetzt ca. 4 Stunden lang gesucht und bin nicht weitegekommen.
Hier mein Skript:
Eine Zahl wird im 10 ms Takt von 1 bis 1000 hoch und wieder
runtergezählt und dabei jeweils einmal rausgesendet.
Würde mich sehr über Hilfe freuen.
--------------------------------------------------------------
1 | % Creating serial port object
|
2 | serobjw = serial('/dev/cu.SERIAL1-SPP-1');
|
3 |
|
4 | %Set connection properties
|
5 | serobjw.Baudrate = 115200; % Set the baud rate at the specific value
|
6 | set(serobjw, 'Parity', 'none') ; % Set parity as none
|
7 | set(serobjw, 'Databits', 8) ; % set the number of data bits
|
8 | set(serobjw, 'StopBits', 1) ; % set number of stop bits as 1
|
9 | set(serobjw, 'FlowContro', 'none') ; % set FlowContro to none
|
10 |
|
11 | set(serobjw, 'OutputBufferSize', 100) ;
|
12 |
|
13 |
|
14 | fopen(serobjw) ;
|
15 |
|
16 |
|
17 |
|
18 | speed = 100;
|
19 | tempCountUp = 1;
|
20 |
|
21 | tempStringPart1 = '[';
|
22 | tempStringPart2 = ']';
|
23 |
|
24 |
|
25 |
|
26 | while (1)
|
27 |
|
28 | cString = sprintf('%s%05.0f%s', tempStringPart1,speed,tempStringPart2);
|
29 |
|
30 | if (strcmp(serobjw.TransferStatus,'write') == 0)
|
31 | fprintf(serobjw,cString,'async');
|
32 | end
|
33 |
|
34 | if(speed == 1)
|
35 | tempCountUp = 1;
|
36 | end
|
37 |
|
38 | if(speed == 1000)
|
39 | tempCountUp = 0;
|
40 | end
|
41 |
|
42 | if(tempCountUp == 1)
|
43 | speed = speed + 1;
|
44 | end
|
45 |
|
46 | if(tempCountUp == 0)
|
47 | speed = speed - 1;
|
48 | end
|
49 |
|
50 | cString
|
51 |
|
52 | pause(0.01);
|
53 |
|
54 | end
|
--------------------------------------------------------------