|
I have the folowing code for a function that reads a string from the COM5 port and then adds it to a table in the database. The value that i should read from COM is smth like "FFFFAAAAAAAAAA000C" but i only get "F". What's wrong?
void CMina_sView::OnListenCom5()
{
CSerial serial;
LONG lLastError = ERROR_SUCCESS;
DWORD dwBytesRead ;
char szBuffer[17];
char * point;
// Attempt to open the serial port (COM5)
lLastError = serial.Open(_T("COM5"),0,0,false);
// Setup the serial port (9600,8N1, which is the default setting)
lLastError = serial.Setup(CSerial::EBaud9600,CSerial::EData8,CSerial::EParNone,CSerial::EStop1);
// Register only for the receive event
lLastError = serial.SetMask(CSerial::EEventBreak |
CSerial::EEventCTS |
CSerial::EEventDSR |
CSerial::EEventError |
CSerial::EEventRing |
CSerial::EEventRLSD |
CSerial::EEventRecv);
lLastError = serial.SetupReadTimeouts(CSerial::EReadTimeoutNonblocking);
// Wait for an event
lLastError = serial.WaitEvent();
// Save event
const CSerial::EEvent eEvent = serial.GetEventType();
// Handle ring event
// Handle data receive event
if (eEvent & CSerial::EEventRecv)
{
do
{
// Read data from the COM-port
lLastError = serial.Read(szBuffer,sizeof(szBuffer)-1,&dwBytesRead);
// Finalize the data, so it is a valid string
szBuffer[dwBytesRead] = '\0';
}
while (dwBytesRead == sizeof(szBuffer)-1);
wchar_t* lpszBuffer = (wchar_t*)calloc(dwBytesRead+1, sizeof(WCHAR));
::MultiByteToWideChar(CP_ACP, 0, szBuffer, -1, lpszBuffer, dwBytesRead+1);
m_pSet->AddNew();
m_pSet->m_Nume="asas";
m_pSet->m_Serie=lpszBuffer;
CTime time = CTime::GetCurrentTime();
m_pSet->m_Data=time;
UpdateData(TRUE);
if (m_pSet->CanUpdate())
m_pSet->Update();
m_pSet->Requery();
UpdateData(FALSE);
m_pSet->Close();
m_pSet->Open();
Invalidate();
UpdateWindow();
}
serial.Close();
}
|
|
|
|
|
First, if you expect people to read that much code, for the love of god format it. Use the pre tag below this box.
Second, you already asked this question. David Crow gave you a good answer. Go read it.
Third, you should be trying to figure out if the bug is in your reading code or your string conversion code. Hence David's question.
earl
|
|
|
|
|
Hello all, by refering to article http://www.codeproject.com/internet/rpcintro1.asp, i was wondering if i allocate an memory at server side, the return the pointer.
// Server function.
const char* Server::Output()
{
m_pVar = new char[1024];
return m_pVar
}
m_pVar is Server class member. Server will delete m_pVar in its destructor. However, may I know once the Client receive the pointer,
// Client code
const char* m_pClientPointer = Output();
does client need to perform deletion on m_pClientPointer?
Thank you!
|
|
|
|
|
Hi All,
I am working on an application that allows the user to upload files on a FTP Server. Now when I use the code below to iterate through the files on the server I just get a '.' and nothing else.
BOOL bResult=true;
WIN32_FIND_DATA w32fdFtpFile;
HINTERNET hInetFindFile=::FtpFindFirstFile(hInetConn,"*.*",&w32fdFtpFile,0,0);
if(hInetFindFile !=(HINTERNET)NULL)
{
while(bResult)
{
bResult=::InternetFindNextFile(hInetFindFile ,&w32fdFtpFile);
}
}
InternetCloseHandle (hInetFindFile);
Can someone point out what I am doing wrong here.
Thanks for any help.
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
change your filter to just * instead of *.* so you won't require a period somewhere in the name.
earl
|
|
|
|
|
Are there files in the folder opened by FtpFindFirstFile() ? Does the while loop run indefinitely, or just once?
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Thanks for replying David. Yes there are files on the server.It shows me only one '.' and nothing else.Any suggestions on how I get all the files.
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
_AnShUmAn_ wrote: Yes there are files on the server.
I did not ask if there were files on the server. I asked if there were files in a specific folder. Since you specified a relative path, rather than an absolute path, to FtpFindFirstFile() , you may very well be in a folder (i.e., CWD) that has no files.
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Hi David,
Can you put some light on how can I set the path of the folder on the FTP Server whose files I want to display in my application
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
Check out FtpSetCurrentDirectory() and FtpGetCurrentDirectory() .
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Thanks again David. I managed to get that working earlier.
Can you provide me a link on how could I set up a callback function for InternetStatusCallback. At present I am doing this way
hInetOpen = InternetOpen("MyFTPClient",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,INTERNET_FLAG_ASYNC);
INTERNET_STATUS_CALLBACK inetStatusCallback =InternetSetStatusCallback(hInetOpen ,(INTERNET_STATUS_CALLBACK)InternetStatusCallback );
if(inetStatusCallback == INTERNET_INVALID_STATUS_CALLBACK)
{
CString szErrMsg;
szErrMsg.Format("%s: %d", "InternetData : InternetSetStatusCallback: ",GetLastError());
return false;
}
I am getting an error "type cast' : cannot convert from 'overloaded-function' to 'INTERNET_STATUS_CALLBACK'
"
Thanks.
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
-- modified at 8:46 Friday 21st July, 2006
|
|
|
|
|
_AnShUmAn_ wrote: I am getting an error "type cast' : cannot convert from 'overloaded-function' to 'INTERNET_STATUS_CALLBACK'
"
You failed to indicate the offending statement. How is InternetStatusCallback() defined?
_AnShUmAn_ wrote: szErrMsg.Format("%s: %d", "InternetData : InternetSetStatusCallback: ",GetLastError());
GetLastError() returns a DWORD , not an int .
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
|
So which statement is the compiler complaining about?
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Everything compiles fine. Just the callback function isn't called.
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
_AnShUmAn_ wrote: Just the callback function isn't called.
What code do you have in place that *should* be calling it?
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
|
stancrm wrote: String*
Uh ? What is a String* ? Either it is a CString or a std::string but I never heard about a String. BTW, the pointer seems strange in that case.
In brief, you have to give more info if you want an answer.
Cédric Moonen
Software developer
Charting control
|
|
|
|
|
|
Cedric Moonen wrote: What is a String* ?
I've no idea, but Windows has a String structure that is used by the Version API. Java has a String class, but this would be the wrong forum for that (like that has ever stopped anyone).
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
stancrm wrote: I write my code using VC++ .NET
That's fine. It matters not what platform you are using. toxcct's point about casting to a const void* is what's important.
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
even the problem told by cedric is true, here is what you have to know about LPCVOID :
L-P-C-VOID stands for long-pointer-const-void, so, const void* ; and you certainly know that any pointer can be casted into void*
TOXCCT >>> GEII power
[VisualCalc 3.0 updated ][Flags Beginner's Guide new! ]
|
|
|
|
|
|
stancrm wrote: Deleted]
[Click for User Profile] stancrm 20hrs 39mins ago
Message Deleting is strickly ban here
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
Hello everyone,
Suppose we have the source codes, how to get all invoked system API (like printf, open, etc.) other than program self-defined API? Are there any existing tools?
Either on Windows or on Linux platform is ok.
thanks in advance,
George
|
|
|
|