I'm working on a LCD data filter. I've got a milling machine with a display. This machine is controlled by a processor board, with a display for instructions and measurement values. I would like to change the language of the display. My idea is to disconnect the display cable from the processor board and connect a pic to the display cable and try to receive the data from the processor board. My pic will act like a display controller and receives the messages from the milling machine. The only information I need, are the measurment values. My pic will be connected to the display. The display will show the information messages in my own language and it will display the measurment values i've received from the processor board.

I'm using the following code to receive the display instructions from the processorboard. The original display is connected in 4 bit mode.

Code:
Main:
    if changed = 1 then
        timeout = timeout + 1
    endif
    LCDdataold = LCDdata
 
    lcddata.0 = LCD_E               ' Copy the pin-states to the LCDdata variable
    lcddata.1 = LCD_RS
    lcddata.4 = LCD_DB4
    lcddata.5 = LCD_DB5
    lcddata.6 = LCD_DB6
    lcddata.7 = LCD_DB7
    
    if LCDdataold <> LCDdata then   ' Compare the pin states withe the old pin states
        LCDlog[j] = lcddata         ' Save the received data in the log array
        j = j + 1
        changed = 1
    Endif

    if timeout >= 10000 then        ' after a while, display the received data
        timeout = 0
        changed = 0
        j = 0
        for i = 0 to 20
            Debug "Received data: ", dec2 i, "-", bin8 LCDlog[i],13,10
            LCDlog[i] = 0           'Clear the log
        next i
        debug 13,10,13,10
    Endif
Goto Main
Now the problem:
The data I receive is not consequent. When I display the same text on the display (by pussing a button on the machine) a few times, i get different log-information from my pic-system. I think it has to something with timing, but I'm not shure were it goes wrong. Any ideas?