Модераторы: PILOT, ManiaK, Mazzi

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание компонентов для VMLAB 
V
    Опции темы
Ivan.
  Дата 3.2.2006, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 2.11.2004

Репутация: 1
Всего: 2



Пытаюсь создать компонент ЖК дисплея для VMLAB
с созданием компанента поверхностно разобрался, создаются ctrl объекты, а потом через апи функции с ними общаешься.
незнаю где взять объект "Image", на катором потом рисовать данные, или может другой какой нибудь - подскажите.
или может создать "PaintBox" и на канве рисовать, но лучше конечно картинку.
еще подскажите, как через апи функции рисовать на канве.
smile


--------------------
Я могу ВСЁ, вопрос - сколько времени у меня это займет!
PM MAIL ICQ   Вверх
Ivan.
Дата 6.2.2006, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 2.11.2004

Репутация: 1
Всего: 2



Немного изменю вопрос, может он становится не к этому разделу.
Как через API нарисовать точку на канве например лейбла?


--------------------
Я могу ВСЁ, вопрос - сколько времени у меня это займет!
PM MAIL ICQ   Вверх
RomanRom
Дата 6.3.2006, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 1.9.2005

Репутация: нет
Всего: нет



У меня вопрос на вопрос. Родной ЖКИ VMLab похоже не рисует символы из области 0x00-0x07, то есть символы, определяемые пользователем. В вашем варианте это будет учтено?
PM MAIL   Вверх
Ivan.
Дата 9.3.2006, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 2.11.2004

Репутация: 1
Всего: 2



у меня компанента WG12864 (128 * 64 пикселя, графический)
очень помогла в отладке драйвера.
произошла проблема с двунаправлеными портами, поэтому пришлось дублировать дважды порты при инициализации
Вот инициализация компаненты в VMLABе:
XLCD _WG12864 DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 D/I R/W E CS1 CS2
например:
XLCD _WG12864 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PA0 PA1 PA2 PA3 PA4
кому надо, вот исходник:
Добавлено @ 12:37
WG12864.cpp
Код

#include <windows.h>
#include <commctrl.h>
#include <stdio.h>
#include <Graphics.hpp>
#pragma hdrstop
#include "../bin/blackbox.h"
int WINAPI DllEntryPoint(HINSTANCE, unsigned long, void*) {return 1;} // is DLL
//==============================================================================
DECLARE_PINS
    DIGITAL_BID(O0, 1);
    DIGITAL_BID(O1, 2);
    DIGITAL_BID(O2, 3);
    DIGITAL_BID(O3, 4);
    DIGITAL_BID(O4, 5);
    DIGITAL_BID(O5, 6);
    DIGITAL_BID(O6, 7);
    DIGITAL_BID(O7, 8);
    DIGITAL_IN(I0, 9);
    DIGITAL_IN(I1, 10);
    DIGITAL_IN(I2, 11);
    DIGITAL_IN(I3, 12);
    DIGITAL_IN(I4, 13);
    DIGITAL_IN(I5, 14);
    DIGITAL_IN(I6, 15);
    DIGITAL_IN(I7, 16);
    DIGITAL_IN(bD, 17);
    DIGITAL_IN(bR, 18);
    DIGITAL_IN(bE, 19);
    DIGITAL_IN(bCS0, 20);
    DIGITAL_IN(bCS1, 21);
END_PINS
//---------------------------------------------------------------------------
DECLARE_VAR
    unsigned char Data;
    unsigned char X0;
    unsigned char Y0;
    unsigned char X1;
    unsigned char Y1;
    char CS0;
    char CS1;
    char E;
    char R;
    char D;
    char Takt;
    unsigned char D0[512];
    unsigned char D1[512];
    FARPROC OldProc0;
    FARPROC OldProc1;
    bool On;
END_VAR
//---------------------------------------------------------------------------
USE_WINDOW(WINDOW_USER_1);
//---------------------------------------------------------------------------
#define pOn        clBlack
#define pOff    0x007FC382
//---------------------------------------------------------------------------
void Clear();
//---------------------------------------------------------------------------
long Proc0(HWND hWnd, unsigned uMsg, WORD wParam, LONG lParam){
    long Res;
    switch(uMsg){
        case WM_PAINT:
            if (VAR(On) == true){
                Res = CallWindowProc((WNDPROC)VAR(OldProc0), hWnd, uMsg, wParam, lParam);
                HDC hDC = GetDC(hWnd);
                for (int y = 0; y < 64; y++){
                    for (int x = 0; x < 8; x++){
                        for (int i = 0; i < 8; i++){
                            SetPixel(hDC, (x * 8 + i) * 2 + 0, y * 2 + 0, ((VAR(D0)[y * 8 + x] >> (7 - i)) & 1) ?pOn :pOff);
                            SetPixel(hDC, (x * 8 + i) * 2 + 1, y * 2 + 0, ((VAR(D0)[y * 8 + x] >> (7 - i)) & 1) ?pOn :pOff);
                            SetPixel(hDC, (x * 8 + i) * 2 + 0, y * 2 + 1, ((VAR(D0)[y * 8 + x] >> (7 - i)) & 1) ?pOn :pOff);
                            SetPixel(hDC, (x * 8 + i) * 2 + 1, y * 2 + 1, ((VAR(D0)[y * 8 + x] >> (7 - i)) & 1) ?pOn :pOff);
                        }
                    }
                }
                ReleaseDC(hWnd, hDC);
            }
            return Res;
    }
    return CallWindowProc((WNDPROC)VAR(OldProc0), hWnd, uMsg, wParam, lParam);
}
//---------------------------------------------------------------------------
long Proc1(HWND hWnd, unsigned uMsg, WORD wParam, LONG lParam){
    long Res;
    switch(uMsg){
        case WM_PAINT:
            if (VAR(On) == true){
                Res = CallWindowProc((WNDPROC)VAR(OldProc1), hWnd, uMsg, wParam, lParam);
                HDC hDC = GetDC(hWnd);
                for (int y = 0; y < 64; y++){
                    for (int x = 0; x < 8; x++){
                        for (int i = 0; i < 8; i++){
                            SetPixel(hDC, (x * 8 + i) * 2 + 0, y * 2 + 0, ((VAR(D1)[y * 8 + x] >> (7 - i)) & 1) ?pOn :pOff);
                            SetPixel(hDC, (x * 8 + i) * 2 + 1, y * 2 + 0, ((VAR(D1)[y * 8 + x] >> (7 - i)) & 1) ?pOn :pOff);
                            SetPixel(hDC, (x * 8 + i) * 2 + 0, y * 2 + 1, ((VAR(D1)[y * 8 + x] >> (7 - i)) & 1) ?pOn :pOff);
                            SetPixel(hDC, (x * 8 + i) * 2 + 1, y * 2 + 1, ((VAR(D1)[y * 8 + x] >> (7 - i)) & 1) ?pOn :pOff);
                        }
                    }
                }
                ReleaseDC(hWnd, hDC);
            }
            return Res;
    }
    return CallWindowProc((WNDPROC)VAR(OldProc1), hWnd, uMsg, wParam, lParam);
}
//---------------------------------------------------------------------------
void SetX0(unsigned char Value){
    Value &= 0x07;
    VAR(X0) = Value;
    char Text[9];
    sprintf(Text, "%d", Value);
    SetWindowText(GET_HANDLE(GADGET2), Text);
}
//---------------------------------------------------------------------------
void SetY0(unsigned char Value){
    Value &= 0x3F;
    VAR(Y0) = Value;
    char Text[9];
    sprintf(Text, "%d", Value);
    SetWindowText(GET_HANDLE(GADGET3), Text);
}
//---------------------------------------------------------------------------
void SetX1(unsigned char Value){
    Value &= 0x07;
    VAR(X1) = Value;
    char Text[9];
    sprintf(Text, "%d", Value);
    SetWindowText(GET_HANDLE(GADGET4), Text);
}
//---------------------------------------------------------------------------
void SetY1(unsigned char Value){
    Value &= 0x3F;
    VAR(Y1) = Value;
    char Text[9];
    sprintf(Text, "%d", Value);
    SetWindowText(GET_HANDLE(GADGET5), Text);
}
//---------------------------------------------------------------------------
void Instruction(){
    if (VAR(Takt) == false){
    }
    else {
        if (VAR(Data) == 0x3F){
            SetWindowText(GET_HANDLE(GADGET13), "On");
            VAR(On) = true;
            Clear();
        }
        else if (VAR(Data) == 0x3E){
            SetWindowText(GET_HANDLE(GADGET13), "Off");
            VAR(On) = false;
            Clear();
        }
        else if ((VAR(Data) & 0xC0) == 0x80){
            SetWindowText(GET_HANDLE(GADGET13), "X");
            if (GET_LOGIC(bCS0))
                SetX0(VAR(Data) & 0x07);
            if (GET_LOGIC(bCS1))
                SetX1(VAR(Data) & 0x07);
        }
        else if ((VAR(Data) & 0xC0) == 0x40){
            SetWindowText(GET_HANDLE(GADGET13), "Y");
            if (GET_LOGIC(bCS0))
                SetY0(VAR(Data) & 0x3F);
            if (GET_LOGIC(bCS1))
                SetY1(VAR(Data) & 0x3F);
        }
        else {
            char Text[10];
            sprintf(Text, "0x%02X", VAR(Data));
            SetWindowText(GET_HANDLE(GADGET13), Text);
        }
    }
}
//---------------------------------------------------------------------------
void DataOut0(unsigned int X, unsigned int Y){
    LOGIC bit[8];
    for (int i = 0; i < 8; i++)
        bit[i] = (VAR(D0)[Y * 8 + X] >> i) & 1;
    SET_LOGIC(O0, bit[0], 0);
    SET_LOGIC(O1, bit[1], 0);
    SET_LOGIC(O2, bit[2], 0);
    SET_LOGIC(O3, bit[3], 0);
    SET_LOGIC(O4, bit[4], 0);
    SET_LOGIC(O5, bit[5], 0);
    SET_LOGIC(O6, bit[6], 0);
    SET_LOGIC(O7, bit[7], 0);
}
//---------------------------------------------------------------------------
void DataOut1(unsigned int X, unsigned int Y){
    LOGIC bit[8];
    for (int i = 0; i < 8; i++)
        bit[i] = (VAR(D1)[Y * 8 + X] >> i) & 1;
    SET_LOGIC(O0, bit[0], 0);
    SET_LOGIC(O1, bit[1], 0);
    SET_LOGIC(O2, bit[2], 0);
    SET_LOGIC(O3, bit[3], 0);
    SET_LOGIC(O4, bit[4], 0);
    SET_LOGIC(O5, bit[5], 0);
    SET_LOGIC(O6, bit[6], 0);
    SET_LOGIC(O7, bit[7], 0);
}
//---------------------------------------------------------------------------
void DataOut(){
    if (VAR(Takt) == false){
        SetWindowText(GET_HANDLE(GADGET13), "DR1");
        if (GET_LOGIC(bCS0))
            DataOut0(VAR(X0), VAR(Y0));
        if (GET_LOGIC(bCS1))
            DataOut1(VAR(X1), VAR(Y1));
    }
    else {
        SetWindowText(GET_HANDLE(GADGET13), "DR2");
    }
}
//---------------------------------------------------------------------------
void Status(){
}
//---------------------------------------------------------------------------
void DataIn0(unsigned int x, unsigned int y){
    if (VAR(On) == true){
        VAR(D0)[y * 8 + x] = VAR(Data);
        HDC hDC = GetDC(GET_HANDLE(GADGET0));
        for (int i = 0; i < 8; i++){
            SetPixel(hDC, (x * 8 + i) * 2 + 0, y * 2 + 0, ((VAR(D0)[y * 8 + x] >> (7 - i)) & 1) ?pOn :pOff);
            SetPixel(hDC, (x * 8 + i) * 2 + 1, y * 2 + 0, ((VAR(D0)[y * 8 + x] >> (7 - i)) & 1) ?pOn :pOff);
            SetPixel(hDC, (x * 8 + i) * 2 + 0, y * 2 + 1, ((VAR(D0)[y * 8 + x] >> (7 - i)) & 1) ?pOn :pOff);
            SetPixel(hDC, (x * 8 + i) * 2 + 1, y * 2 + 1, ((VAR(D0)[y * 8 + x] >> (7 - i)) & 1) ?pOn :pOff);
        }
        ReleaseDC(GET_HANDLE(GADGET0), hDC);
        SetY0(VAR(Y0) + 1);
    }
}
//---------------------------------------------------------------------------
void DataIn1(unsigned int x, unsigned int y){
    if (VAR(On) == true){
        VAR(D1)[y * 8 + x] = VAR(Data);
        HDC hDC = GetDC(GET_HANDLE(GADGET1));
        for (int i = 0; i < 8; i++){
            SetPixel(hDC, (x * 8 + i) * 2 + 0, y * 2 + 0, ((VAR(D1)[y * 8 + x] >> (7 - i)) & 1) ?pOn :pOff);
            SetPixel(hDC, (x * 8 + i) * 2 + 1, y * 2 + 0, ((VAR(D1)[y * 8 + x] >> (7 - i)) & 1) ?pOn :pOff);
            SetPixel(hDC, (x * 8 + i) * 2 + 0, y * 2 + 1, ((VAR(D1)[y * 8 + x] >> (7 - i)) & 1) ?pOn :pOff);
            SetPixel(hDC, (x * 8 + i) * 2 + 1, y * 2 + 1, ((VAR(D1)[y * 8 + x] >> (7 - i)) & 1) ?pOn :pOff);
        }
        ReleaseDC(GET_HANDLE(GADGET1), hDC);
        SetY1(VAR(Y1) + 1);
    }
}
//---------------------------------------------------------------------------
void DataIn(){
    if (VAR(Takt) == false){
        SetWindowText(GET_HANDLE(GADGET13), "DW1");
    }
    else {
        SetWindowText(GET_HANDLE(GADGET13), "DW2");
        if (GET_LOGIC(bCS0))
            DataIn0(VAR(X0), VAR(Y0));
        if (GET_LOGIC(bCS1))
            DataIn1(VAR(X1), VAR(Y1));
    }
}
//---------------------------------------------------------------------------
void SetE(LOGIC Value){
    VAR(E) = Value;
    if (Value == 1){
        char Text[9];
        LOGIC bit[8]; 
        bit[0] = GET_LOGIC(I7);
        bit[1] = GET_LOGIC(I6);
        bit[2] = GET_LOGIC(I5);
        bit[3] = GET_LOGIC(I4);
        bit[4] = GET_LOGIC(I3);
        bit[5] = GET_LOGIC(I2);
        bit[6] = GET_LOGIC(I1);
        bit[7] = GET_LOGIC(I0);
        VAR(Data) = 0;
        for(int j = 0; j < 8; j++){
            if (bit[j] == 2){
                Text[j] = 'X';
            }
            else {
                Text[j] = '0' + bit[j];
                VAR(Data) = VAR(Data) * 2 + bit[j];
            }
        }
        Text[8] = '\0';
        SetWindowText(GET_HANDLE(GADGET6), Text);
        sprintf(Text, "0x%02X", VAR(Data));
        SetWindowText(GET_HANDLE(GADGET7), Text);
        if (GET_LOGIC(bR)){
            if (GET_LOGIC(bD)){
                DataOut();
            }
            else {
                SetWindowText(GET_HANDLE(GADGET13), "S");
                Status();
            }
        }
        else {
            if (GET_LOGIC(bD)){
                DataIn();
            }
            else {
                SetWindowText(GET_HANDLE(GADGET13), "I");
                Instruction();
            }
        }
        SetWindowText(GET_HANDLE(GADGET10), "1");
        VAR(Takt) = !VAR(Takt);
    }
    else if (Value == 0)
        SetWindowText(GET_HANDLE(GADGET10), "0");
    else
        SetWindowText(GET_HANDLE(GADGET10), "X");
}
//---------------------------------------------------------------------------
void SetR(LOGIC Value){
    VAR(R) = Value;
    if (Value == 1){
        SetWindowText(GET_HANDLE(GADGET9), "1");
        SET_DRIVE(O0, true);
        SET_DRIVE(O1, true);
        SET_DRIVE(O2, true);
        SET_DRIVE(O3, true);
        SET_DRIVE(O4, true);
        SET_DRIVE(O5, true);
        SET_DRIVE(O6, true);
        SET_DRIVE(O7, true);
    }
    else {
        SET_DRIVE(O0, false);
        SET_DRIVE(O1, false);
        SET_DRIVE(O2, false);
        SET_DRIVE(O3, false);
        SET_DRIVE(O4, false);
        SET_DRIVE(O5, false);
        SET_DRIVE(O6, false);
        SET_DRIVE(O7, false);
        if (Value == 0)
            SetWindowText(GET_HANDLE(GADGET9), "0");
        else
            SetWindowText(GET_HANDLE(GADGET9), "X");
    }
}
//---------------------------------------------------------------------------
void SetD(LOGIC Value){
    VAR(D) = Value;
    if (Value == 1)
        SetWindowText(GET_HANDLE(GADGET8), "1");
    else if (Value == 0)
        SetWindowText(GET_HANDLE(GADGET8), "0");
    else
        SetWindowText(GET_HANDLE(GADGET8), "X");
}
//---------------------------------------------------------------------------
void SetCS0(LOGIC Value){
    VAR(CS0) = Value;
    if (Value == 1)
        SetWindowText(GET_HANDLE(GADGET11), "1");
    else if (Value == 0)
        SetWindowText(GET_HANDLE(GADGET11), "0");
    else
        SetWindowText(GET_HANDLE(GADGET11), "X");
}
//---------------------------------------------------------------------------
void SetCS1(LOGIC Value){
    VAR(CS1) = Value;
    if (Value == 1)
        SetWindowText(GET_HANDLE(GADGET12), "1");
    else if (Value == 0)
        SetWindowText(GET_HANDLE(GADGET12), "0");
    else
        SetWindowText(GET_HANDLE(GADGET12), "X");
}
//---------------------------------------------------------------------------
void Clear(){
    SetX0(0);
    SetY0(0);
    SetX1(0);
    SetY1(0);
    SetE(-1);
    SetCS0(-1);
    SetCS1(-1);
    SetR(-1);
    SetD(-1);
    for (int y = 0; y < 64; y++){
        for (int x = 0; x < 8; x++){
            VAR(D0)[y * 8 + x] = 0;
            VAR(D1)[y * 8 + x] = 0;
        }
    }
    CallWindowProc((WNDPROC)Proc0, GET_HANDLE(GADGET0), WM_PAINT, 0, 0);
    CallWindowProc((WNDPROC)Proc1, GET_HANDLE(GADGET1), WM_PAINT, 0, 0);
}
//---------------------------------------------------------------------------
const char *On_create(){
    return NULL;
}
//---------------------------------------------------------------------------
void On_window_init(HWND pHandle){
    VAR(OldProc0) = 0L;
    VAR(OldProc1) = 0L;
    VAR(On) = false;
}
//---------------------------------------------------------------------------
void On_destroy(){
}
//---------------------------------------------------------------------------
void On_simulation_begin(){
    VAR(OldProc0) = (FARPROC)(LONG)GetWindowLong(GET_HANDLE(GADGET0), GWL_WNDPROC);
    SetWindowLong(GET_HANDLE(GADGET0), GWL_WNDPROC, (LONG)(FARPROC)Proc0);
    VAR(OldProc1) = (FARPROC)(LONG)GetWindowLong(GET_HANDLE(GADGET1), GWL_WNDPROC);
    SetWindowLong(GET_HANDLE(GADGET1), GWL_WNDPROC, (LONG)(FARPROC)Proc1);
    Clear();
}
//---------------------------------------------------------------------------
void On_simulation_end(){
    SetWindowLong(GET_HANDLE(GADGET0), GWL_WNDPROC, (LONG)(FARPROC)VAR(OldProc0));
    SetWindowLong(GET_HANDLE(GADGET1), GWL_WNDPROC, (LONG)(FARPROC)VAR(OldProc1));
    SetWindowText(GET_HANDLE(GADGET0), "");
    SetWindowText(GET_HANDLE(GADGET1), "");
    VAR(On) = false;
}
//---------------------------------------------------------------------------
void On_digital_in_edge(PIN pDigitalIn, EDGE pEdge, double pTime){
    switch(pDigitalIn) {
        case bE:
            if (VAR(E) != (char)GET_LOGIC(bE))
                SetE(GET_LOGIC(bE));
            break;
        case bD:
            if (VAR(D) != (char)GET_LOGIC(bD))
                SetD(GET_LOGIC(bD));
            break;
        case bCS0:
            if (VAR(CS0) != (char)GET_LOGIC(bCS0))
                SetCS0(GET_LOGIC(bCS0));
            break;
        case bCS1:
            if (VAR(CS1) != (char)GET_LOGIC(bCS1))
                SetCS1(GET_LOGIC(bCS1));
            break;
    }
    if (VAR(R) != (char)GET_LOGIC(bR))
        SetR(GET_LOGIC(bR));
}
//---------------------------------------------------------------------------
double On_voltage_ask(PIN pAnalogOut, double pTime){
    return KEEP_VOLTAGE;
}
//---------------------------------------------------------------------------
void On_time_step(double pTime){
}
//---------------------------------------------------------------------------
void On_remind_me(double pTime, int pData){
}
//---------------------------------------------------------------------------
void On_gadget_notify(GADGET pGadgetId, int pCode){
    switch(pGadgetId){
        case GADGET14:
            if(pCode == BN_CLICKED){
                Clear();
            }
        break;
    }
}
//---------------------------------------------------------------------------




--------------------
Я могу ВСЁ, вопрос - сколько времени у меня это займет!
PM MAIL ICQ   Вверх
Ivan.
Дата 9.3.2006, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 2.11.2004

Репутация: 1
Всего: 2



WG12864.rc
Код

#include "../bin/blackbox.h"
//---------------------------------------------------------------------------
#define WIDTH 251  // *** Do not modify the width !! ***
#define HEIGHT 99  // Modify only the height if necessary
//---------------------------------------------------------------------------
WINDOW_USER_1 DIALOG 0, 0, WIDTH, HEIGHT
STYLE WS_CHILD | WS_VISIBLE
FONT 8, "MS Sans Serif"
{
    CONTROL "", EXPAND_FRAME, "button", BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 2, 0, WIDTH - 5,  HEIGHT - 3
    CONTROL "", EXPAND_BUTTON, "button", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE, 7, 0, 9, 9
    //***************************************************************************
    CONTROL "", -1, "static", WS_BORDER | WS_CHILD | WS_VISIBLE, 5, 12, 172, 80
    CONTROL "", GADGET0, "static", WS_CHILD | WS_VISIBLE, 6, 13, 85, 79
    CONTROL "", GADGET1, "static", WS_CHILD | WS_VISIBLE, 91, 13, 85, 79
    CONTROL "X:", -1, "static", SS_CENTER | WS_CHILD | WS_VISIBLE, 180, 14, 10, 11
    CONTROL "", GADGET2, "static", SS_RIGHT | SS_SUNKEN | WS_CHILD | WS_VISIBLE, 192, 12, 25, 11
    CONTROL "", GADGET4, "static", SS_RIGHT | SS_SUNKEN | WS_CHILD | WS_VISIBLE, 219, 12, 25, 11
    CONTROL "Y:", -1, "static", SS_CENTER | WS_CHILD | WS_VISIBLE, 180, 26, 10, 11
    CONTROL "", GADGET3, "static", SS_RIGHT | SS_SUNKEN | WS_CHILD | WS_VISIBLE, 192, 24, 25, 11
    CONTROL "", GADGET5, "static", SS_RIGHT | SS_SUNKEN | WS_CHILD | WS_VISIBLE, 219, 24, 25, 11
    CONTROL "Data:", -1, "static", SS_CENTER | WS_CHILD | WS_VISIBLE, 180, 37, 64, 11
    CONTROL "", GADGET6, "static", SS_CENTER | SS_SUNKEN | WS_CHILD | WS_VISIBLE, 180, 46, 37, 11
    CONTROL "", GADGET7, "static", SS_CENTER | SS_SUNKEN | WS_CHILD | WS_VISIBLE, 219, 46, 25, 11
    CONTROL "D", -1, "static", SS_CENTER | WS_CHILD | WS_VISIBLE, 180, 59, 11, 11
    CONTROL "", GADGET8, "static", SS_CENTER | SS_SUNKEN | WS_CHILD | WS_VISIBLE, 180, 68, 11, 11
    CONTROL "R", -1, "static", SS_CENTER | WS_CHILD | WS_VISIBLE, 193, 59, 11, 11
    CONTROL "", GADGET9, "static", SS_CENTER | SS_SUNKEN | WS_CHILD | WS_VISIBLE, 193, 68, 11, 11
    CONTROL "E", -1, "static", SS_CENTER | WS_CHILD | WS_VISIBLE, 206, 59, 11, 11
    CONTROL "", GADGET10, "static", SS_CENTER | SS_SUNKEN | WS_CHILD | WS_VISIBLE, 206, 68, 11, 11
    CONTROL "S1", -1, "static", SS_CENTER | WS_CHILD | WS_VISIBLE, 220, 59, 11, 11
    CONTROL "", GADGET11, "static", SS_CENTER | SS_SUNKEN | WS_CHILD | WS_VISIBLE, 220, 68, 11, 11
    CONTROL "S2", -1, "static", SS_CENTER | WS_CHILD | WS_VISIBLE, 233, 59, 11, 11
    CONTROL "", GADGET12, "static", SS_CENTER | SS_SUNKEN | WS_CHILD | WS_VISIBLE, 233, 68, 11, 11
    CONTROL "", GADGET13, "static", SS_CENTER | SS_SUNKEN | WS_CHILD | WS_VISIBLE, 180, 81, 30, 11
    CONTROL "Clear", GADGET14, "button", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 214, 81, 30, 11
}
//---------------------------------------------------------------------------

Добавлено @ 13:00
Могу помочь с компиляцией и ...
пишите ICQ:277-405-742
также могу дать исходник драйвера для работы с ним
драйвер умеет:
- рисовать пиксели;
- рисовать закрашеные прямоугольники (в том числе горизонтальные и вертикальные линии соответственно);
- выводить картинки (относительно) любых размеров и в любую координаты (не кратно 8), например X = 1, Y = 2, W = 10, H = 20;
- выводить текст из указанного шрифта плавающей ширины (всмысле например пробел узенький, 'Ж' широкая), в любую координату;
- умеет ожирнять, подчеркивать и курсивить текст из базового шрифта;
- имеет режимы наложения (None, AND, OR, XOR);
- режим инверсии;
- работает с системой координат положительного и отрицательного значения
- да, и самое главное имеет ограничивающее окно прорисовки (тоесть прорисовывает не все, а только то, что поместилось в окно, а остальное не трогает).
правдо с курсивом пока небольшие глюки.
драйвер написан в режиме ассемблерных вставок



--------------------
Я могу ВСЁ, вопрос - сколько времени у меня это займет!
PM MAIL ICQ   Вверх
RomanRom
Дата 14.3.2006, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 1.9.2005

Репутация: нет
Всего: нет



Как я понимаю, ваша титаническая прога сделана под графический ЖКИ. Я имел в виду символьный ЖКИ 16 мест на 2 строки. Родной компонент VMLab не выводит символы пользователя в начальных адресах. Нет ли у кого самодельного компонента, чтобы нормально показывал?
PM MAIL   Вверх
Ivan.
Дата 16.3.2006, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 2.11.2004

Репутация: 1
Всего: 2



к сожалению нет.
если подробнее рассмотреть ихний компанент, то в основе экрана лежит class Static и они просто выводят туда текст заданным шрифтом. скорее всего шрифт там установлен "MS Sans Serif" 8 размера. При необходимости можно изменить этот шрифт и заполнить начальные символы. структура этого шрифта очень проста, можно даже это сделать обычным HEX редактором.


--------------------
Я могу ВСЁ, вопрос - сколько времени у меня это займет!
PM MAIL ICQ   Вверх
RomanRom
Дата 16.3.2006, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 1.9.2005

Репутация: нет
Всего: нет



Наверное с редактированием шрифта ничего не получится, поскольку, например, в ячейки фонта 0х00-0х07 я могу в своей программе для контроллера занести сначала один свой символ (разные точки, черточки размером 5х7), а через секунду - другой свой символ с другими точками или черточками. Получается множество фонтов, что нереально?
PM MAIL   Вверх
Ivan.
Дата 20.3.2006, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 2.11.2004

Репутация: 1
Всего: 2



напиши свой компанент, в этом компаненте хорошо то, что там нет привязки во времени, а есть тактирующий сигнал - это значительно облегчает задачу.


--------------------
Я могу ВСЁ, вопрос - сколько времени у меня это займет!
PM MAIL ICQ   Вверх
SergBil
Дата 30.3.2006, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 30.3.2006

Репутация: нет
Всего: нет



пробовал компилировать примеры из VMLAB, вот что пишет:
Running Win32 toolkit...
Borland C++ 5.5 for Win32 Copyright © 1993, 2000 Borland
counter.cpp:

Exit Code = 0

Borland Resource Compiler Version 5.40
Copyright © 1990, 1999 Inprise Corporation. All rights reserved.

Exit Code = 0

Turbo Incremental Link 5.00 Copyright © 1997, 2000 Borland
Fatal: Unable to open file 'PROGRAM.OBJ'

Exit Code = 2

как с этим бороться? научите..

Это сообщение отредактировал(а) SergBil - 30.3.2006, 11:23
PM MAIL   Вверх
Ivan.
Дата 4.4.2006, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 2.11.2004

Репутация: 1
Всего: 2



тоже сталкивался с этим, он не понимает длинные имена. во вкладке Compiler settings укажи короткие пути:
"C:\progra~1\Borland\..." и все пойдет


--------------------
Я могу ВСЁ, вопрос - сколько времени у меня это займет!
PM MAIL ICQ   Вверх
SergBil
Дата 4.4.2006, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 30.3.2006

Репутация: нет
Всего: нет



я поступил по другомуsmile
использую VMLAB только для создания шаблона
редактирую текст в Notepad++(очень удобно и синтаксис понимаетsmile), а компилирую батником из FAR
Добавлено @ 13:20
to Ivan
тебе ещё нужна помощ с кированием на конве через API?
PM MAIL   Вверх
Ivan.
Дата 4.4.2006, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 2.11.2004

Репутация: 1
Всего: 2



нет, я уже сделал, и даже выложил ^^^, дай лучше BAT. я все кроме Builder пишу в UEStudio? попробуй - прикольный редактор.


--------------------
Я могу ВСЁ, вопрос - сколько времени у меня это займет!
PM MAIL ICQ   Вверх
RESET_Pusher
Дата 11.10.2006, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



Я откопал русскоязычный перевод фирменного руководства VMLab по созданию пользовательских компонентов. Правда, он немного сыроватый, но обещают его подредактировать. К тому же я это видел только в одном месте: http://avr.h15.ru ... ну, там раздел по vmlab, прямой ссылки не помню.
PM MAIL   Вверх
RomanRom
Дата 3.10.2007, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 1.9.2005

Репутация: нет
Всего: нет



to IVAN
Время много прошло, а вопрос остался - чем компилировались файлы cpp и rc
из вашего проекта ЖКИ?
В Borland-5.5 библиотеки Graphics.hpp нет, может ее можно где-то скачать?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0682 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.