|
Actually, it was not the numbers I was concerned about, but rather the assumption that the density of the drives equals the density of the displaced water.
I assume your ship has a hull, and thus it displaces the mass of the disk drives in water (salt or fresh) rather than the volume of them.
Jebbes approach is still not proven impossible.
|
|
|
|
|
Hmmm, you do have a point there... Hard drives are denser than water (no, I'm not testing this, but I have held bottled water).
So, if you would be so kind as to weight one of your Tb hard drives, then submerge it and get the displaced volume, I would be happy to recalculate whether then delivery start time was before or afer mankind descended from the trees.
(I don't mean little Jenssen getting an apple last week).
As for impossibility... I know you all are in denial, but you're simply fictions of my deranged imagination. So anything solution that happens after I die / wake up doesn't count...
Iain.
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job!
|
|
|
|
|
It is common knowledge that if you fill a disk drive with light weight data structures, it will float on water.
|
|
|
|
|
You may use 24 tons of C12 (and a way to pack one struct in each atom)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
If i could,i will.
|
|
|
|
|
Your algorithm is probably wrong or inefficient. You'll do better to change your algorithm.
There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition.
Blaise Pascal
|
|
|
|
|
guys..i am using silicon lab to send a data out to visual C++ using serial comm...i already know how to establish the serial port and receive data from the serial port...and i also can recieve data from it..but now the problem is the data i receive are strange character...example: i send a "hi" the output is "h¡ ||| |||" i dun understand this...im using printf("hi"); and using MFC to configure the serial comm..any helps?
|
|
|
|
|
Without seeing any code all we can do is guessing.
Maybe you are filling part of an uninitialized array and treating the entire array as if it were to contain valid data?
Show code, show more examples, figure out what the common characteristics are of your examples, look at the data both in ASCII and in hex, and try and explain the very first abnormal character or byte.
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
|
|
|
|
|
I'm guessing that you are not null terminating the buffer into which you receive data.
Serial port communication does not null terminate anything.
So you might want to zero out the buffer before receiving data.
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|
|
ok..heres part of the code that put the data
void CComPort::Read(CString& sResult)
{
BOOL bWriteRC;
BOOL bReadRC;
DWORD iBytesWritten;
DWORD iBytesRead;
DWORD dwError;
char sBuffer[128];
char sMsg[512];
iBytesWritten = 0;
bWriteRC = WriteFile(m_hCom, "RE\r",3,&iBytesWritten,NULL);
if (!bWriteRC || iBytesWritten == 0)
{
dwError = GetLastError();
sprintf(sMsg, "Write of length query failed: RC=%d, "
"Bytes Written=%d, Error=%d",
bWriteRC, iBytesWritten, dwError);
AfxMessageBox(sMsg);
} // end if
memset(sBuffer,0,sizeof(sBuffer));
bReadRC = ReadFile(m_hCom, &sBuffer, 6, &iBytesRead, NULL);
if (bReadRC && iBytesRead > 0)
{
sResult = sBuffer;
}
else
{
/*sResult = "Read Failed";
dwError = GetLastError();
sprintf(sMsg, "Read length failed: RC=%d Bytes read=%d, "
"Error=%d ",
bReadRC, iBytesRead, dwError);
AfxMessageBox(sMsg);*/
} // end if
} // end CComP
the data that comes from the micro controller is put in sBuffer which then is put inside sResult...i can show display..but it give codes that looks like ascii to me...sometimes this " L!11…" sometimes this " 11…11", "LL!11","Š*ª11", and the best one i could get was this "HELL!",btw i send the word "HELLO"..
|
|
|
|
|
Try adding the following bold line to your code. It will null terminate your string as mentioned earlier.
memset(sBuffer,0,sizeof(sBuffer));
bReadRC = ReadFile(m_hCom, &sBuffer, 6, &iBytesRead, NULL);
sBuffer[iBytesRead] = 0;
if (bReadRC && iBytesRead > 0)
{
...
Hope that helps.
Karl - WK5M
PP-ASEL-IA (N43CS)
PGP Key: 0xDB02E193
PGP Key Fingerprint: 8F06 5A2E 2735 892B 821C 871A 0411 94EA DB02 E193
|
|
|
|
|
Hello,
i am creating a rectangle using glDrawPixels by specifying it's height and width. I need to rotate this rectangle somehow 45 degrees. What should i do in order to rotate this rectangle. by using glRasterPos i am positioning that rect somewhere on the screen. How would i keep it rotating?
thanks
|
|
|
|
|
Why are you using glDrawPixels ?
Can't you use glRect and then apply transformation on it (glRotate for instance) ?
|
|
|
|
|
hello,
i am using it because i was told to use it. I can't use OpenGL for rotation so somehow i need to apply the pixels from glDrawPixels to the rotation matrix...
please don't tell me not to use glDrawPixels and use something else because i am just following the assignment. I must use it. So i am curious having that.. how can go around and trying to rotate those pixels with rotation matrix. NOT OPNEGL...
I know it's not the best way to do it but this is what i am asked to do.
thanks
|
|
|
|
|
The entry NtfsDisable8dot3NameCreation under the registry key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem is set to 0 by default. Now in one of the setups i tried to make this registry entry to 1 to disable short path generation. I did not find the short path getting disabled even after m/c reboot. This info is based on the article at http://support.microsoft.com/kb/121007.
The article mentions the below
NOTE: The change to the NtfsDisable8dot3NameCreation registry entry affects only files, folders, and profiles that are created after the change. Files that already exist are not affected.
Based on this I deleted the file and the folder for which I want the short path generated and later repaired the installation.
The problem that is coming is due to the degernation of short path the windows scheduler is not able to find the file to schedule with other command line params.
Does something related to changing user profile needs to be done?
|
|
|
|
|
Is there any explanation or hints here. Calling microsoft experts.
|
|
|
|
|
I have a rountine in an ActiveX control that is called from another thread (made by some other DLL). I want to be able to raise an event ('Error' in this case which takes a long and a string as argument) which will be caught by the VB6 app which will contain this ActiveX control. Unless I'm mistaken, the reason my VB6 app keeps crashing is because I'm not performing any kind of thread safety. Can someone please let me know what I should be doing here (or if my assumption is wrong)?
void __stdcall MyActiveXCtrl::OnReplyAudio(LPVOID pData)
{
if (CAN_PLAY_AUDIO)
{
ProcessAudio(pData);
if (!m_audioHardware->RequestAudio())
Error(23, _T("m_audioHardware->RequestAudio()=FALSE"));
}
else
UnloadAudio();
}
|
|
|
|
|
After some debugging, I found that the reason it was crashing out was because a FileSystemObject I had in the vb6 code was not playing nice on the thread that raised the Error event. When I take that out, the app stop crashing.
If I was in .Net, I'm sure I could do this stuff with delegates, but I'm not in .Net.
My question still remains, does anyone know the best way in an MFC ActiveX control to raise an event on another thread?
|
|
|
|
|
tadams1138 wrote: does anyone know the best way in an MFC ActiveX control to raise an event on another thread?
There's only one correct way, even though it may look differently depending on the implementation: marshalling.
"Raising an event" in fact means calling an interface implemented by the client from the server. The same rules apply as when calling an interface implemented by the server from a client.
As always, when crossing apartment boundaries you have to marshal the interface. Since the secondary thread in your case is another apartment, you have to marshal the client interface to the secondary apartment.
You also have to make sure you set up the secondary apartment properly by calling ::CoInitialize() from that thread before doing any COM related stuff and consequently call ::CoUninitialize() before exiting the thread.
Marshalling the client interface, or the "event sink", can be done using the GIT (Global Interface Table). You add an interface to the GIT that you want to marshal and get it in the apartment where you want to use it. When you're done with the interface you revoke it from the GIT.
Read more about the GIT here[^].
"It's supposed to be hard, otherwise anybody could do it!" - selfquote "High speed never compensates for wrong direction!" - unknown
|
|
|
|
|
hello everybody in this forum . i would like to ask one question about calling com file from c++
i have a com file that is written in c++ also , i need to import that dll and then create object from one of its object classes and invoke its methods , how can i import and initialize Com files in c++ to be able to call its objects and methods in my c++ project ?
please help friends
thanks
Human knowledge belongs to the world.
|
|
|
|
|
[^].
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Well done, you're using the right site now
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Hey kids (you & 'that I.') stop mocking Daddy: elderly people deserve deference!
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
In addition to the search, you should also look for "#import", as that will get you started on the way.
Iain.
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job!
|
|
|
|
|
I am currently writing an application using C++ and MFC. As you might expect in the method InitInstance, I call new to create an instance of the main window class. I assign this pointer to m_pMainWnd. However, I am never freeing the object being created there. I feel this is a problem.
I plan to delete the object in the routine ExitInstance. I would think this would be standard practice but I have not seen any examples in my MFC books that do this. I am wondering why. Could it be that these authors do not do this because they feel it is does not matter since the application will terminate anyway? I kind of feel that they should.
Please comment.
Thanks
Bob
|
|
|
|