One thing I've noticed is that you're trying to read "count" times, where each read reads up to 16 bytes. Probably not what you intended. Also, the available() call doesn't seem relevant here. You want to read a certain number of bytes (16?), so just repeat the loop 16 times, reading one byte at a time.
On Fri, May 23, 2014 at 11:54 PM, Ahmed Zargoun <[email protected]> wrote: > > Hello, > > i have a problem of receiving a buffered data from AX12 servo motor. > I'm using processing in this project. i have succeed to send the data. and > make the motor move. > but the receiving part remain unsolved. here is my code > > > import ioio.lib.api.*; > import ioio.lib.api.exception.*; > import com.pinkhatproductions.pioio.*; > import java.io.*; > > > // for connection to pc host > static { > // leave commented out to auto-discover serial port (SLOW!) > //System.setProperty("ioio.SerialPorts", "/dev/tty.usbmodem1411"); > } > > > char iPING =0x01; //obtain a status packet > char iREAD_DATA =0x02; //read Control Table values > char iWRITE_DATA =0x03; //write Control Table values > char iREG_WRITE =0x04; //write and wait for ACTION instruction > char iACTION =0x05; //triggers REG_WRITE instruction > char iRESET =0x06; //set factory defaults > char iSYNC_WRITE =0x83; //simultaneously control multiple actuators > char GOAL_POSITION_L=0x1E; > char PRESENT_POSITION_L=0x24; > char PRESENT_POSITION_H=0x25; > char PRESENT_SPEED_L=0x26; > char PRESENT_SPEED_H=0x27; > char PRESENT_LOAD_L=0x28; > char PRESENT_LOAD_H=0x29; > char LED=0x19; > char TORQUE_ENABLE=0x18; > char PRESENT_VOLTAGE=0x2A; > PIOIOManager ioioManager = new PIOIOManager(this); > > Uart uart; > DigitalOutput led; > DigitalOutput DTR; > OutputStream out; > InputStream in; > BufferedReader bufrd; > char checksum=0; > char[] TxBuff = new char[16]; > char[] reading = new char[16]; > char packet_len; > > void setup() { > size(800, 600); > ioioManager.start(); > > > > } > > void draw() { > background(200); > fill(0); > textSize(28); > text(" ground motor value :" +reading, 10, height/2); > > } > > void mouseReleased() { > destroy(); > } > > void mousePressed() { > > get_pos(char(6)); > > > } > > void destroy() { > led_torq(char(6)); > } > > > > void ioioSetup(IOIO ioio) throws ConnectionLostException { > > uart = ioio.openUart(4, 6, 115200, Uart.Parity.NONE, Uart.StopBits.ONE); > led = ioio.openDigitalOutput(IOIO.LED_PIN, true); > DTR = ioio.openDigitalOutput(18, true); > > > in = uart.getInputStream(); > out = uart.getOutputStream(); > > > bufrd = new BufferedReader(new InputStreamReader(in)); > > > } > > void ioioLoop(IOIO ioio) throws ConnectionLostException { > > led.write(false); > > > try { > > > > Thread.sleep(20); > } > catch (InterruptedException e) { > } > } > > > void led_torq(char id){ > > try { > > DTR.write(true); > > try{ > > > //clear checksum value > out.write(0xFF); > out.write(0xFF); > out.write(0x06); > out.write(0x05); > out.write(0x03); > out.write(0x18); > out.write(0x00); > out.write(0x01); > out.write(0xDD); > > } > > catch (IOException e){ > } > > } > catch (ConnectionLostException e) { > } > } > > > > void get_pos (char id){ > > try { > > DTR.write(true); > > checksum=0; //clear checksum value > TxBuff[0] = 0xFF; //0xFF not included in checksum > TxBuff[1] = 0xFF; > TxBuff[2] = id; > checksum += TxBuff[2]; > TxBuff[3] = char(4); // param_len +2 > checksum += > TxBuff[3]; > > TxBuff[4] = iREAD_DATA; // instruction > checksum += TxBuff[4]; > TxBuff[5] = PRESENT_POSITION_L; //Control Starting Address > checksum += TxBuff[5]; > TxBuff[6]=char(~checksum); > > packet_len =char(7); //TxBuff[3] + 4 number of bytes for the > whole packet > > try { > for(int i=0; i<packet_len;i++) > { > out.write(TxBuff[i]); //the library waits for transfer > complete, output.flush() is called > } > } > catch (IOException e){ > } > > delay(20); > > DTR.write(false); > > try { > int count = in.available(); > println(" bytes = " + count); > > if (count > 0){ > // for(i=0; i<count;i++) > // { > bufrd.read(reading); //the library waits for transfer > complete, output.flush() is called > // } > } > } > catch (IOException e){ > } > > > > } > catch (ConnectionLostException e) { > } > } > > -- > You received this message because you are subscribed to the Google Groups > "ioio-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/ioio-users. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "ioio-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/ioio-users. For more options, visit https://groups.google.com/d/optout.
