You can only send codes within the range of 0 to 255. Sending 0 is pointless as it pulls down all lines and sends nothing. It is used to end the pulse. Could you please try sending pulses ranging from 0 to 255 as numbers and report back what is registered? Remember that your codes must be numbers in your condition file, not strings, see example below
Yes, I understand the principle - it is just a bit strange on this system we’ve got I think. I spoke to the manufacturers of the equipment, who explained that the data received from the parallel port is then converted to voltage (see below info).
The parallelsync cable is wired up (with some added components) so that in converts the digital signal (i.e. 8 bits) from the parallel port to an analog signal. The state of all of the pins (D0-D7) are always taken into consideration when generating the analog output. If the output from the parallel port is 0, then the voltage out is 0. If the output is 255, then the voltage is 5V, 128 is 2.5V, 64 is 1.25V, etc.
There is also some noise in the system which makes it tricky to see small differences.
In theory this all makes sense. In practice, triggers of both 255 and 128 in PsychoPy correspond to roughly 4V on the trace, while any other value (including those between 128 and 255) is so tiny that you can barely see it.
I’m in the lab again on Thursday so will try some more systematic testing and also dig into the recorded data to see what I can see.
I’m doing a block design (fNIRS) so actually, for now, just knowing the onset and offset of each block is sufficient, but for future studies I would like to get to the bottom of it.
Oh, you have an analogue output when you were expecting a digital output. In a block design, marking the start and end of a block is probably sufficient.