2015-04-13 2 views
0

Я новичок в программировании в любой форме C.Dynamic C (Тесо PC1620-PLC) контролирования LDC

У меня есть PLC (Тесо PC1620) (с использованием процессора кролика) с ЖК-экраном (матрица орбитальный LK204-7T-1У-USB-WB). Я пытаюсь использовать построение в горизонтальной функции бара/графика на ЖК-дисплее.

Приведенный ниже код работает, но я хочу иметь возможность изменять длину строки (6-е значение в массиве «bar»). Я пробовал это с кодом, прокомментированным вместо статической константы для «bar», это кажется неработоспособным и дает случайные полосы на ЖК-дисплее.

Что может привести к этому, и может быть, есть более простой/лучший способ присвоить массив «бар».

#use "oempc16xxdrivers.elib"       //Include the OEM pro-teso PC16XO driver library 
#define DINBUFSIZE 31         //Defining the serial IN buffer size 
#define DOUTBUFSIZE 31         //Defining the serial OUT buffer size 

void main() 
{ 

static const char clear[] = {254,88};   //Clear LCD command 
static const char load[] = {254,104};    //Initialize horizontal bar 
static const char bar[] = {254,124,1,1,0,54}; //Place horizontal bar(245,124) column,Row,Direction,Length 

auto int percentage; 
auto int rxKey; 
//auto char bar[6]; 

IOInit();           //Initialises the PC1600 (PLC). 
serDopen(19200L);         //Setting the baudrate of the serial port 
serDrdFlush();         //Flushes the serial port D input buffer 
serDwrFlush();          //Flushes the serial port D transmit buffer 

serDwrite(clear,sizeof(clear));    //Clear LCD 
serDwrite(load,sizeof(load));     //Initialize horizontal bar 

// bar[0] = 254; 
// bar[1] = 124; 
// bar[2] = 1; 
// bar[3] = 1; 
// bar[4] = 0; 
// bar[5] = 54; 

    for(;;) 
    { 
    rxKey = serDgetc(); 

    percentage = 10; 
    //bar[5] = percentage; 

    if (0x42 == rxKey) 
    { 
    serDwrite(bar,sizeof(bar)); 
    } 
    } 

serDclose(); 
} 

Динамические с версии 9.62

Ссылки:

LCD: https://www.matrixorbital.com/advanced_search_result.php?keywords=LK204-7T-1U+usb&search.x=0&search.y=0

PLC: http://www.teso.com.au/pro-teso/PC1-Controllers/PC1600-Controller.aspx

+0

Работает ли изменение длины бара с декларацией 'static'? И «auto» имеет особое значение в компиляторе Rabbit? 'auto' обычно не требуется. http://stackoverflow.com/questions/2192547/where-is-the-c-auto-keyword-used –

+0

* «Объявление статичного не будет работать, конечно» * Я думал, что этот вопрос говорит, что это работает, но не 'auto' local def. –

+0

Извините, мой предыдущий комментарий был совершенно неправильным, поэтому я удалил его. Не использовать «auto» сделал разницу, объявив панель как: 'char bar [6];' заставил ее работать. Также объявляем его как 'static char bar [6];' работает. Я не знаю, имеет ли значение 'auto' особый смысл в компиляторе Rabbit, я изучаю себя, все, что я знаю, что мой код не работает. – CookieB

ответ

0

Ваш код кажется правильным.

Возможно ли, что вы очень коротко на стеке? Это может быть очень хорошим виновником, так как вы добавили автоматическую переменную.

Попробуйте, если он будет работать, если вы определяете бар как глобальный/статический.

+0

Не использовать «auto» сделал разницу, объявив панель следующим: 'char bar [6];' заставил ее работать. Также объявляем его как 'static char bar [6];' работает. благодарит за помощь! – CookieB