09-23-2011 08:59 AM
Unfortunately I am still using 32-bit WindowsXP (even though the computer is a 64-bit CPU with 12GB of RAM...don't ask...I.T. issues).
Bruce
02-01-2012 08:18 AM
Sorry it's been a while, but thinking over the discussion (I'm still having the issue on Dell T3500 computers, unfortunately IT is putting these computers everywhere), I am sending slightly more than 1024 bytes since I have the 1kB packets sent with a start byte, checksum and end byte.
Here's the transmission format:
<ASCII SOT - 1><1kB Packet Data><2 byte checksum><ASCII EOT - 4>
So I am sending 1028 bytes total.
So far it works fine on Dell T3400 and Optiplex 745 computers but not on the T3500.
Any ideas?
Thanks,
Bruce
02-01-2012 09:56 AM
Here's some additional information...
After the packet is sent (1028 bytes), if you do an IMAQ Serial Read, there are numerous "€" characters (sometimes about 20 "€" characters) (ASCII 128) in the serial read buffer. Typically the camera sends back a one character response ("0", "1", "u", "r", or "q" to signify OK, Error, Unknown Error, Resend, or Quit) and € is not a programmed response of the camera.
Bruce
02-01-2012 10:01 AM
Hi Bruce,
I was looking through my notes, and about the time of your postings last year, I had run a test on a T3500 running Windows 7 for hours and hours with no errors. The test used a hardware serial loopback, and compared the incoming serial data with what was sent. The quantity and content of the data always matched.
But, I couldn't get permission to re-image the machine with Windows XP. Evidently, I didn't ever post my results to the forum -- sorry about that.
A couple of thoughts since this is still an issue:
* I can see if I can get a hold of a similar system and retry with 1028 bytes instead of 1024 bytes. Can you send your camera file and any code snippets (are you using LabVIEW or C? which version?) that send the serial config data?
* Another thought... can you change your application to send the data in smaller chunks (like 128 or 512 bytes), with 1 ms pauses in between (e.g. send start bit + 511 bytes of data; pause 1 millisecond; Send 512 bytes of data; pause 1 millisecond; Send 1 byte of data + checksum + stop bit). The fact that it doesn't work between Dell computer models suggests a low-level PCIe timing dependency... I know that you're sending large amounts of configuration data, so the pauses aren't optimal, but it might help us figure out the root of the problem. Does the behavior change if you increase the pause to something ridiculous like 100 ms? Does the behavior change if you use really small chunks (like 8 bytes)?
* Just to confirm... you said in your original forum post that the same thing worked with a PCIe-1429 in the T3500 computer? There are a few under-the-hood architectural changes since the 1429 that could affect serial transmission, but the fact that it only fails on the T3500 doesn't suggest a framegrabber-level problem.
-Daniel
02-01-2012 01:43 PM
Thanks for taking the time to look at this problem again. I think I have found the solution.
It seems that a BIOS settings called "C States Control" if ON causes the error to occur. (I will turn this setting to off for all of my PCs).
I found the cause by turning off all BIOS settings and noticing that the error did not occur, and then selectively turning ON settings until the problem was isolated (by reboot after each change, almost a dozen times).
This setting seems to fix errors that have occurred in both WinXP and Win7 64-bit PCs. Thank goodness it looks like this issue is resolved!
Bruce
02-01-2012 03:14 PM
Well I'm glad that the fix works, although it came from a surprising place. I've heard of C-states causing problems for hardware-initiated DMA, but never the serial port. Thanks for sharing back to the forums.
Glad to hear it,
Daniel