Skocz do zawartości

aju_cor

Członkowie
  • Postów

    4
  • Dołączył

  • Ostatnio

    Nigdy

Posty napisane przez aju_cor

  1. Witam ponownie...

    Własnie dostałem dopowiedż z FTDI:

    "I just checked our bug database and found something:

    Title setFlowControl returning false using Java D2XX driver

    Detailed Description usbDevice.setFlowControl(D2xxManager.FT_FLOW_NONE, (byte) 0, (byte) 0)

    returns false.

    Root Cause The setFlowControl API does not handle the return value correctly."

     

    Problem dotyczy drivera, więc sprawa zamknięta do momentu opublikowania poprawki przez FTDI.

    Jednak dalej mam problem z komunikacją. Z treści zwrotnego maila jescze wynika, że funkcja set_flow_controll działa dobrze, tylko status zwraca źle...

    Myślałem, że set_flow_controll nie ustawia poprawnego sterowania przepływem, dlatego mam problem...

    //--------------------------------

    W tej chwili wygląda to tak, że potrafię wysłać dane do FT232RL, dane są poprawnie odebrane z właściwą sumą CRC16. Niesety nie odbieram odpowiedzi z FT232RL mimo, że dane faktycznie są zarejestrowane przez system androida.

    Całość w odbiorze wygląda tak:

    bytesAvailable = ftDev.getQueueStatus();

    funkcja zwraca poprawną ilość zbuforowanych odebranych danych,
    później odczytuję dane do tablicy:

    readed_bytes = ftDev.read(packetBytes, bytesAvailable);

    funkcja również zwraca tą samą wartość, czyli readed_bytes  = bytesAvailable
    Problem w tym, ze tablica packetBytes nie zawiera odebranych danych.
    Zaznaczę, że dane wysyłam do urządzenia i odbieram z urządzenia w tym samym wątku...
    Pytanie dlaczego w buforze nie mam odebranych danych w ilości readed_bytes?     

    Może ktoś spotkał się z podobnym problemem...

    Pozdrawiam!

    Sławek

      

  2. Witam! Dzięki za szybką odpowiedź. Dla wyjasnienia: 1. Oczywiście, mam zrobioną komunikację PC <> FT232RL, działa bez problemów Co więcej, uruchomiłem terminal androidowy, ściągnięty ze strony FTDI - wszytsko działa. 2. Próby z kolejnością wywoływania poszczególnych funkcji już wcześniej robiłem - zawsze ten sam rezultat - SetFlowControl zwraca false... 3. Pod podanym powyżej linkiem, funkcja SetConfig robi to co ja... tylko oni nie sprawdzają rezultatu :) Popróbuję jeszcze i dam znać. P.S. 3 tygodnie temu zadałem pytanie z tym problemem, na oficjalny support FTDI - do tej pory nie mam odpowiedzi. Będę ich nękał dalej :), chyba ze wcześniej odkryję błąd :) Pozdrowienia. Sławek
  3. Witam!

    Próbuję zmontować komunikację z układem FTDI FT232R z poziomu Androida.

    Finalnie mam problem z funkcją setFlowControl zwracającą false...

    Poniżej framgment funkcji OpenFTDI, która zwraca wartość 6 w przypadku gdy sterowanie przepływem jest ustawiona na FT_FLOW_NONE or XON_XOFF. 

    W przypadku, gdy ustawię na FT_FLOW_DTR_DSR or RTS_DTR funcja pracuje prawidłowo.

    Próbowałem z różnymi niższymi prędkościami typu 9600 etc, bez skutku... 

    int OpenFTDI() throws IOException {
    	int index = 0;
    	int result = -1;
    	boolean result_bl = false;
    
    	//------------------------------------
    
    	// Get FT_Device and Open the port
    	ftD2xx = D2xxManager.getInstance(this);
    	DevCount = ftD2xx.createDeviceInfoList(this);
    	if (DevCount > 0) {
    		ftDev = ftD2xx.openByIndex(this, index);
    
    		// Configure the port to UART
    		if (ftDev.isOpen() == true) {
    			// Reset FT Device
    			result_bl = ftDev.setBitMode((byte) 0, D2xxManager.FT_BITMODE_RESET);
    
    			if (result_bl == true) {
    				// Set Baud Rate
    				result_bl = ftDev.setBaudRate(230400);
    
    				if (result_bl == true) {
    					// Set Data Bit , Stop Bit , Parity Bit
    					result_bl = ftDev.setDataCharacteristics(D2xxManager.FT_DATA_BITS_8, D2xxManager.FT_STOP_BITS_1, D2xxManager.FT_PARITY_NONE);
    
    					if (result_bl == true) {
    						// Set Flow Control
    						result_bl = ftDev.setFlowControl(D2xxManager.FT_FLOW_NONE, (byte) 0x0b, (byte) 0x0d);
    						if (result_bl == true) {
    							result = 0; //port has been openeed & configured OK
    						} else {
    							result = 6;
    						}
    					} else {
    						result = 5;
    					}
    				} else {
    					result = 4;
    				}
    			} else {
    				result = 3;
    			}
    		} else {
    			result = 2;
    		}
    	} else {
    		result = 1;
    	}
    
    	return (result);
    
    }

    Co dalej ??? dlaczego nie mogę ustawić sterowania na NONE?

    Całość testuję na Androidzie 4.4

    Pozdrawiam!

    Sławek

×
×
  • Utwórz nowe...