Программирование COM PORT на POCKET PC
От: Аноним  
Дата: 24.04.06 16:53
Оценка:
Как быстрее всего запрограммировать пару команд отправки и приема по ком порту для POCKET PC! Подскажите пожалуйста. Какую среду разработки выбрать? с чего начать?! Есть команды AT и есть КПК IPAQ.
Re: Программирование COM PORT на POCKET PC
От: 3D-Vovka Украина  
Дата: 25.04.06 03:44
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Как быстрее всего запрограммировать пару команд отправки и приема по ком порту для POCKET PC! Подскажите пожалуйста. Какую среду разработки выбрать? с чего начать?! Есть команды AT и есть КПК IPAQ.


Среду следует выбирать ту, которую лучше всего знаешь. Я использую EVC 4.0. В MSDN есть пример для работы с портом.
Вот как єто делаю я.

HANDLE m_hPort;
OpenPort()
{
DWORD dwError;
COMMTIMEOUTS CommTimeouts;
LPTSTR lpszPortName=TEXT("COM1:");
DCB PortDCB;

m_hPort = CreateFile (lpszPortName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if ( m_hPort == INVALID_HANDLE_VALUE )
{dwError = GetLastError (); return false;}


PortDCB.DCBlength = sizeof (DCB);
GetCommState (m_hPort, &PortDCB);
// Change the DCB structure settings.
PortDCB.BaudRate = 9600; // Current baud
PortDCB.fBinary = TRUE; // Binary mode; no EOF check
PortDCB.fParity = TRUE; // Enable parity checking.
PortDCB.fOutxCtsFlow = FALSE; // No CTS output flow control
PortDCB.fOutxDsrFlow = FALSE; // No DSR output flow control
PortDCB.fDtrControl = DTR_CONTROL_ENABLE;
// DTR flow control type
PortDCB.fDsrSensitivity = FALSE; // DSR sensitivity
PortDCB.fTXContinueOnXoff = TRUE; // XOFF continues Tx
PortDCB.fOutX = FALSE; // No XON/XOFF out flow control
PortDCB.fInX = FALSE; // No XON/XOFF in flow control
PortDCB.fErrorChar = FALSE; // Disable error replacement.
PortDCB.fNull = FALSE; // Disable null stripping.
PortDCB.fRtsControl = RTS_CONTROL_DISABLE;
// RTS flow control
PortDCB.fAbortOnError = FALSE; // Do not abort reads/writes on
// error.
PortDCB.ByteSize = 8; // Number of bits/bytes, 4-8
PortDCB.Parity = NOPARITY; // 0-4=no,odd,even,mark,space
PortDCB.StopBits = ONESTOPBIT; // 0,1,2 = 1, 1.5, 2

if (!SetCommState (m_hPort, &PortDCB))
{dwError = GetLastError ();return FALSE;}

GetCommTimeouts (m_hPort, &CommTimeouts);

CommTimeouts.ReadIntervalTimeout = MAXDWORD;
CommTimeouts.ReadTotalTimeoutMultiplier = 250;//250
CommTimeouts.ReadTotalTimeoutConstant = 0;//250
CommTimeouts.WriteTotalTimeoutMultiplier = 850;
CommTimeouts.WriteTotalTimeoutConstant = 950;
if (!SetCommTimeouts (m_hPort, &CommTimeouts))
{dwError = GetLastError (); return false;}

EscapeCommFunction (m_hPort, CLRIR);
return TRUE;
}

WritePort(LPCVOID lpBuffer, DWORD nWrite)
{
DWORD dwError, dwNumBytesWritten = 0;

if (!WriteFile (m_hPort, lpBuffer, nWrite, &dwNumBytesWritten, NULL))
dwError = GetLastError ();
return dwNumBytesWritten;
}

ReadPort(LPVOID lpBuffer, DWORD nRead)
{
DWORD dwError, dwNumBytesRead = 0;

if (!ReadFile (m_hPort, lpBuffer, nRead, &dwNumBytesRead, NULL))
dwError = GetLastError ();
return dwNumBytesRead;
}
... << RSDN@Home 1.2.0 alpha rev. 0>>
Re[2]: Программирование COM PORT на POCKET PC
От: Аноним  
Дата: 25.04.06 04:21
Оценка:
А вот чтобы окошко выпало и было написано что подключен COM PORT №1???? что нужно нафигачить?!
Re: Программирование COM PORT на POCKET PC
От: vepd  
Дата: 25.04.06 06:30
Оценка:
Что касательно .NET CF, то


using System.IO.Ports;



есть класс SerialPort

Если надо очень просто, то можно так


string comPort = "COM1:";
string BaudRate = "4800";

SerialPort st = new SerialPort(comPort, Baudrate);
try
{
    st.Open();
    If( st.IsOpen() )   
    {
        StreamReader sr = new StreamReader(st.BaseStream, System.Text.Encoding.UTF8); // или StreamWriter
     // а потом используя перегруженные функции Read() и Write() делайте чего Вам там надо.

        sr.Close();
        st.Close();
    }
    else
    {
        MessageBox.Show("твое сообщение");
    }

}
catch (Exception e)
{
     //......
}


Одно замечание: строка "имя компорта" для Покетов должна заканчиваться на : (двоеточие!!!) Например: COM1:
Re[2]: Программирование COM PORT на POCKET PC
От: vepd  
Дата: 25.04.06 06:37
Оценка:
int BaudRate = 4800;


Ooops. Sorry.
Re[3]: Программирование COM PORT на POCKET PC
От: 3D-Vovka Украина  
Дата: 25.04.06 06:52
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>А вот чтобы окошко выпало и было написано что подключен COM PORT №1???? что нужно нафигачить?!

Если на MFC, то можна так:
AfxMessageBox(_T("подключен COM PORT №1"));
... << RSDN@Home 1.2.0 alpha rev. 0>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.