Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ком порт - разбор полётов.... 
:(
    Опции темы
Annuta
Дата 3.10.2006, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ребята!!! Помогите пожаста разобраться с кодом... я уже с ума схожу!!! Вырыла из инета прогу на Си.. для работы с ком портом... и прога суперская... всё читает..
вот только она всё это считывает сначала в буффер, (на сколько я могу понять) - потом копирует то что сичтала в другой буффер data.  И вот я хочу 
1. - понять сколько байт принято из порта.
2. прочесть каждый байт отдельно...! т.е. вывести его на экран со своими ремарками.
 
     ЛЮДИ ! Откликнитесь!!! Горит!!! заранее спасибо...  
Код

#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include "commWrapper.h"

// Toggles error message boxes (if SILENT is defined, no message boxes will be shown)
//#define SILENT

HANDLE hThread = NULL;
HANDLE hComm = INVALID_HANDLE_VALUE;
BOOL needCloseThread;

LPBYTE dataToTransmit = NULL;
int dataToTransmitSize = 0;
HANDLE hTransmitMutex = NULL;

LPBYTE receiveBuffer = NULL;
int receiveBufferSize = 0;
HANDLE hReceiveMutex = NULL;

int receiveIndex;

HWND hMessageWnd;

DWORD __stdcall ThrProc (LPVOID param)
{
    DWORD d;
    COMSTAT stat;

    while (!needCloseThread)
    {
        // Try to get a lock on the transmit mutex
        if (WaitForSingleObject (hTransmitMutex, 3000) == WAIT_OBJECT_0)
        {
            // Success. Let's see if we have something to transmit
            if (dataToTransmit && (dataToTransmitSize > 0))
            {
                WriteFile (hComm, dataToTransmit, dataToTransmitSize, &d, NULL);
                dataToTransmitSize -= d;
            }
            
            // Release the mutex
            ReleaseMutex (hTransmitMutex);
        }

        // Receive
        ClearCommError (hComm, &d, &stat);

        if (stat.cbInQue > 0)
        {
            if (stat.cbInQue > 255)
                stat.cbInQue = 255;
                  
            if (receiveIndex + (int) stat.cbInQue > receiveBufferSize)
            
            receiveIndex = 0;

            ReadFile (hComm, &(receiveBuffer[receiveIndex]), stat.cbInQue, &d, NULL);
            
            receiveIndex += d;
             
            ReleaseMutex (hReceiveMutex);
        }
    }

    return 0;
}

BOOL StartCOM (int portNumber, DCB *dcb, int bufferSize, HWND hWnd)
{
    hMessageWnd = hWnd;

    if (bufferSize <= 0)
    {
        #ifndef SILENT
        MessageBox (hMessageWnd, "Invalid buffer size", "Error", MB_OK | MB_ICONSTOP);
        #endif //SILENT

        return FALSE;
    }

    if (hThread != NULL)
    {
        #ifndef SILENT
        MessageBox (hMessageWnd, "Thread is already started", "Error", MB_OK | MB_ICONSTOP);
        #endif //SILENT

        return FALSE;
    }

    if (portNumber <= 0)
    {
        #ifndef SILENT
        MessageBox (hMessageWnd, "Invalid COM port number", "Error", MB_OK | MB_ICONSTOP);
        #endif //SILENT

        return FALSE;
    }

    if ((dcb == NULL) || (dcb->DCBlength != sizeof (DCB)))
    {
        #ifndef SILENT
        MessageBox (hMessageWnd, "Invalid DCB structure", "Error", MB_OK | MB_ICONSTOP);
        #endif //SILENT

        return FALSE;
    }

    char s[128];
    sprintf (s, "COM%i", portNumber);
    hComm = CreateFile (s, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

    if (hComm == INVALID_HANDLE_VALUE)
    {
        #ifndef SILENT
        MessageBox (hMessageWnd, "Could not open COM port", "Error", MB_OK | MB_ICONSTOP);
        #endif //SILENT

        return FALSE;
    }

    if (!SetCommState (hComm, dcb))
    {
        #ifndef SILENT
        MessageBox (hMessageWnd, "Could not set COM state", "Error", MB_OK | MB_ICONSTOP);
        #endif //SILENT

        CloseHandle (hComm);
        hComm = INVALID_HANDLE_VALUE;
        return FALSE;
    }

    needCloseThread = FALSE;

    // Create transmit mutex
    dataToTransmit = NULL;
    dataToTransmitSize = 0;
    hTransmitMutex = CreateMutex (NULL, FALSE, NULL);

    // Create receive mutex
    hReceiveMutex = CreateMutex (NULL, FALSE, NULL);

    // Create receive buffer
    receiveIndex = 0;
    receiveBufferSize = bufferSize;
    receiveBuffer = (LPBYTE) malloc (receiveBufferSize);

    hThread = CreateThread (NULL, 0, &ThrProc, (LPVOID) hMessageWnd, 0, NULL);
    return TRUE;
}

BOOL IsCOMStarted ()
{
    return hThread != NULL;
}

BOOL StopCOM ()
{
    if (hThread == NULL)
    {
        #ifndef SILENT
        MessageBox (hMessageWnd, "Thread is already stopped", "Error", MB_OK | MB_ICONSTOP);
        #endif //SILENT

        return FALSE;
    }

    // Signal the thread to terminate...
    needCloseThread = TRUE;
    // ...and wait for it to stop.
    WaitForSingleObject (hThread, INFINITE);
    
    // Close handles.
    CloseHandle (hThread);
    hThread = NULL;
    CloseHandle (hComm);
    hComm = INVALID_HANDLE_VALUE;

    // Remove mutexes
    CloseHandle (hTransmitMutex);
    hTransmitMutex = NULL;
    CloseHandle (hReceiveMutex);
    hReceiveMutex = NULL;

    // Remove receive buffer
    free (receiveBuffer);
    receiveBuffer = NULL;
    receiveBufferSize = 0;

    return FALSE;
}

HANDLE GetCOMHandle ()
{
    return hComm;
}

BOOL Transmit (LPBYTE data, int dataSize)
{
    if (hThread == NULL)
    {
        #ifndef SILENT
        MessageBox (hMessageWnd, "Thread is not started", "Error", MB_OK | MB_ICONSTOP);
        #endif //SILENT

        return FALSE;
    }

    if (WaitForSingleObject (hTransmitMutex, 3000) == WAIT_TIMEOUT)
    {
        #ifndef SILENT
        MessageBox (hMessageWnd, "Timed out synchronizing with the thread", "Error", MB_OK | MB_ICONSTOP);
        #endif //SILENT

        return FALSE;
    }

    // Copy variables
    dataToTransmit = data;
    dataToTransmitSize = dataSize;
    // Release the mutex to let the transmission thread gain access to the variables
    ReleaseMutex (hTransmitMutex);

    Sleep (1);

    // Wait for transmition to complete...
    WaitForSingleObject (hTransmitMutex, INFINITE);
    // ...ensure that all data has been transmitted...
    BOOL bSuccess = dataToTransmitSize == 0;
    // ..clear variables...
    dataToTransmitSize = 0;
    dataToTransmit = NULL;
    // ...and immediately release the mutex
    ReleaseMutex (hTransmitMutex);

    if (!bSuccess)
    {
        #ifndef SILENT
        MessageBox (hMessageWnd, "Error writing to port", "Error", MB_OK | MB_ICONSTOP);
        #endif //SILENT

        return FALSE;
    }

    return TRUE;
}

BOOL Receive (LPBYTE data, int dataSize, int *dataReturned)
{
    if (hThread == NULL)
    {
        #ifndef SILENT
        MessageBox (hMessageWnd, "Thread is not started", "Error", MB_OK | MB_ICONSTOP);
        #endif //SILENT

        return FALSE;
    }

    // Copy pointer to data to internal variables protected by mutex
    // Try to get a lock on the mutex
    if (WaitForSingleObject (hReceiveMutex, 3000) == WAIT_TIMEOUT)
    {
        #ifndef SILENT
        MessageBox (hMessageWnd, "Timed out synchronizing with the thread", "Error", MB_OK | MB_ICONSTOP);
        #endif //SILENT

        return FALSE;
    }

    // Return size of the data read
    if (dataReturned != NULL)
        *dataReturned = receiveIndex;

    if (data != NULL)
    {
        if (receiveIndex > dataSize)
        // Data cannot fit into the buffer
        {
            #ifndef SILENT
            MessageBox (hMessageWnd, "Buffer provided is not long enought", "Error", MB_OK | MB_ICONSTOP);
            #endif //SILENT
            
            ReleaseMutex (hReceiveMutex);
            return FALSE;

        }

        // OK: copy the data
        if (receiveIndex > 0)
            memcpy (data, receiveBuffer, receiveIndex); 
    }
        
    receiveIndex = 0;
    
    // Release mutex
    ReleaseMutex (hReceiveMutex);
    return TRUE;
}


и диалог
Код

#include "stdafx.h"
#include "ComTest.h"
#include "ComTestDlg.h"
#include "commWrapper.h"
#include ".\comtestdlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CComTestDlg dialog

CComTestDlg::CComTestDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CComTestDlg::IDD, pParent)
{
    //{{AFX_DATA_INIT(CComTestDlg)
        // NOTE: the ClassWizard will add member initialization here
    //}}AFX_DATA_INIT
}

void CComTestDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CComTestDlg)
    DDX_Control(pDX, IDOK, m_OK);
    DDX_Control(pDX, IDC_TRANSMITTEXT, m_TransmitText);
    DDX_Control(pDX, IDC_RECEIVETEXT, m_ReceiveText);
    DDX_Control(pDX, IDC_CONNECT, m_Connect);
    DDX_Control(pDX, IDC_COM_SPIN, m_ComSpin);
    DDX_Control(pDX, IDC_COM, m_Com);
    //}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CComTestDlg, CDialog)
    //{{AFX_MSG_MAP(CComTestDlg)
    ON_BN_CLICKED(IDC_CONNECT, OnConnect)
    ON_WM_TIMER()
    //}}AFX_MSG_MAP
    ON_EN_CHANGE(IDC_TRANSMITTEXT, OnEnChangeTransmittext)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CComTestDlg message handlers

BOOL CComTestDlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    m_OK.EnableWindow (false);
    m_TransmitText.EnableWindow (false);

    m_ComSpin.SetRange (1, 15);
    m_ComSpin.SetPos (1);

    SetTimer (1, 100, NULL);

    return TRUE;  // return TRUE  unless you set the focus to a control
}

void CComTestDlg::OnCancel() 
{
    if (IsCOMStarted ())
        StopCOM ();

    KillTimer (1);
    
    CDialog::OnCancel();
}

void CComTestDlg::OnConnect() 
{
    if (IsCOMStarted ())
    {
        StopCOM ();
        m_Connect.SetWindowText ("Connect");
        m_OK.EnableWindow (false);
        m_TransmitText.EnableWindow (false);
        m_Com.EnableWindow (true);
    }
    else
    {
        CString s;
        m_Com.GetWindowText (s);
        DCB dcb;
        memset (&dcb, 0, sizeof (DCB));
        dcb.DCBlength = sizeof (DCB);
        dcb.BaudRate = 38200;
        dcb.fParity = FALSE;
        dcb.ByteSize = 8;
        dcb.Parity = NOPARITY;
        dcb.StopBits = ONESTOPBIT;

        if (StartCOM (atoi (s), &dcb, 0xFFFF, m_hWnd))
        {
            
            dcb.fDtrControl = DTR_CONTROL_ENABLE;
            dcb.fRtsControl = RTS_CONTROL_ENABLE;
            SetCommState (GetCOMHandle (), &dcb);
            dcb.fDtrControl = DTR_CONTROL_DISABLE;
            dcb.fRtsControl = RTS_CONTROL_ENABLE;
            SetCommState (GetCOMHandle (), &dcb);
            Transmit ((LPBYTE) "?", 1);
            /*************************************/

            m_Connect.SetWindowText ("Disconnect");
            m_OK.EnableWindow (true);
            m_TransmitText.EnableWindow (true);
            m_ReceiveText.SetWindowText ("");
            m_Com.EnableWindow (false);
        }
    }
}

void CComTestDlg::OnOK() 
{
    if (IsCOMStarted ())
    {
        CString s,str;
        m_TransmitText.GetWindowText (s);
        s += "\r\n";
        str="";
        Transmit ((LPBYTE) (LPCTSTR) s, s.GetLength ());
        m_TransmitText.SetWindowText (str);
    }
}

void CComTestDlg::OnTimer(UINT nIDEvent) 
{
    if (IsCOMStarted ())
    {
        static BYTE buf[0xFFFFF];
        int d = 0;
        int i;
        CString s_num;
        
        if (Receive (buf, 0xFFFFF, &d) && d) 
        {
            buf[d] = 0;
            CString s;
            m_ReceiveText.GetWindowText (s);
            s += (LPSTR) buf;
            /*s_num.Format("%d",d);
            s +=s_num;*/
            m_ReceiveText.SetWindowText (s);
            m_ReceiveText.LineScroll (0xFFFFF);
                    
        }
          
    }

    CDialog::OnTimer(nIDEvent);
}

void CComTestDlg::OnEnChangeTransmittext()
{
// TODO:  Add your control notification handler code here
}



           

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  commWrapper.cpp 6,66 Kb
--------------------
Программист - это комбинация лени и логики !
PM MAIL   Вверх
Romikgy
Дата 3.10.2006, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(Annuta @  3.10.2006,  12:13 Найти цитируемый пост)
Горит!!!

что горит  smile где горит  smile в ноль один звонили  smile 

а терь нормально , что конкретно не получается? если есть ошибки то приводит!


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Annuta
Дата 3.10.2006, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



 Скоро надо будет звонить не в 01 а 03 !!!
Ошибки... да я просто не знаю как даже подступиться к этому...?  Конкретно мне нужно получить следующее на едите после чтения данных:
  байт1 -ля ля ля
  байт2 -ля ля ля
  байт3 -ля ля ля.... и т.п.   Я прошу - ПОМОГИТЕ МНЕ РАЗОБРАТЬ КОД  Ну пожаста... ... ну мне о-о-очень нужно....  Как мне организовать цикл чтобы так вывести байты..?

--------------------
Программист - это комбинация лени и логики !
PM MAIL   Вверх
Annuta
Дата 3.10.2006, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



  Все данные полученные от железа пишутся в едит черезе переменную s я определяю её размер так - sizeof(s) ... Как мне теперь "расчленить её на байты и вывести по кусочкам..?"
  sizeof(s) - это кстати размер переменой в байтах  я правильно думаюю???? smile 

Это сообщение отредактировал(а) Annuta - 3.10.2006, 14:58
--------------------
Программист - это комбинация лени и логики !
PM MAIL   Вверх
Annuta
Дата 3.10.2006, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



АУ!!! Люди --??? Откликнитесь... Эксперты ...  Неужели никто не поможет...
--------------------
Программист - это комбинация лени и логики !
PM MAIL   Вверх
Romikgy
Дата 3.10.2006, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(Annuta @  3.10.2006,  14:35 Найти цитируемый пост)
АУ!!! Люди --??? Откликнитесь... Эксперты ... 

не надо так орать (с)

с такими запросами имхо надо в центр помощи обращатся!

Цитата(Annuta @  3.10.2006,  12:58 Найти цитируемый пост)
 байт1 -ля ля ля

что обазначается ляляля?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Annuta
Дата 3.10.2006, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



... На кого вы меня покинули на центр помощи...???!!! Это значит что извлекаю байт... 
  я уже даже вроде разобралась как 
   вроде так :
   
Код

for (i=0; i < d; i++)    
     {
  if((buf[i] & 1)==0)
 {s="End string";}
 s +=buf[i];
m_ReceiveText.SetWindowText (s);

  а далее мне необходимо разложить его на биты ... я тут темку нашла там последний бит определить кому-то надо а мне каждый бит байта... нудно определить и в зависимрсти от того чему он равен вывести в едит к примеру слова "да" и "нет"
  Во..... чего нужно... 
--------------------
Программист - это комбинация лени и логики !
PM MAIL   Вверх
Romikgy
Дата 3.10.2006, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Код

if (buf[i]&1) printf("1 bit set");
if (buf[i]&2) printf("2 bit set");
if (buf[i]&4) printf("3 bit set");
if (buf[i]&8) printf("4 bit set");
if (buf[i]&0x10) printf("5 bit set");
if (buf[i]&0x20) printf("6 bit set");
if (buf[i]&0x40) printf("7 bit set");
if (buf[i]&0x80) printf("8 bit set");


Это сообщение отредактировал(а) Romikgy - 3.10.2006, 16:48


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Annuta
Дата 3.10.2006, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



А зачем 4 раза писать ???  .. и моноьпоооооподробней чо это и как это..

Добавлено @ 17:10 
А зачем 4 раза писать ???  .. и моно поооооподробней чо это и как это..
    Т.е. я пояню на всякий пожарный чего хочу... 
   У меня железо даёт... байт например
B8 -> или в битах10111000 - теперь мне нуно... 
  Если 1-й бит =1 пишем слово "есть"
  Если 2-й бит =0 пишем слово "нет"

   Так вроде ясней..
и так с каждым битом с каждым байтом..
--------------------
Программист - это комбинация лени и логики !
PM MAIL   Вверх
Romikgy
Дата 3.10.2006, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(Annuta @  3.10.2006,  15:58 Найти цитируемый пост)
А зачем 4 раза писать ???  .. и моноьпоооооподробней чо это и как это..  

где 4 раза ? я расписал на каждый бит их в байте 8 
if (buf[i]&1) printf("1 bit set");
если в буффере с итым элементом есть 1 бит (установлен, не нулевой) то на экране распечатается текст, вместо принта можно вставить все что угодно, и куда угодо вывод,
имхо такой вот совет , сначало почитать основы языка си , посидеть покурить этот исходник, после курения!, а уж потом что будет не понятно , милости просим, а получается не конструктивный разговор!


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Annuta
Дата 3.10.2006, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Всё Romikgy, -- СПАСИБО!!! Я разобралась... 
  ЧМОК!!! пошла читать основы Си...

 
--------------------
Программист - это комбинация лени и логики !
PM MAIL   Вверх
Romikgy
Дата 3.10.2006, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(Annuta @  3.10.2006,  16:19 Найти цитируемый пост)
пошла читать основы Си...

Дафай Дафай !!! smile ждем после курения данной литры здеся smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Annuta
Дата 5.10.2006, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Погрызла  я Си...  Но хоть убей не пому... почему в переменной d у меня вместо колличества байт - число всех символов которые были считаны с порта..???? Ромик.... Ты здеся ???
--------------------
Программист - это комбинация лени и логики !
PM MAIL   Вверх
Romikgy
Дата 5.10.2006, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(Annuta @  5.10.2006,  15:24 Найти цитируемый пост)
Ты здеся ??? 

здеся
Цитата(Annuta @  5.10.2006,  15:24 Найти цитируемый пост)
колличества байт - число всех символов

а разве это не одно и тоже?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Annuta
Дата 5.10.2006, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



у меня в документации к железу сказано так :
  что придёт мне ответ... и будет в оом ответе 6 байт .. и бюудет ответ иметь такоц вид :
   41 00 B0 1F AF 10
   а ещё табличка такая есть и там говорится.. что в первом байте сообщешия от железа будет 41 .. во втотром будет 00 . итдтп..
   Не одно и тоже... Что ДЕЛАТЬ!!!!!!!!

Добавлено @ 16:40 
Ромик у тя Ася нет... так удобней общаться ..
--------------------
Программист - это комбинация лени и логики !
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




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


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

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