OK... Now I'm confused...
The VISA documentation states that "
VI_ATTR_SEND_END_EN specifies whether to assert END during the transfer of the last byte of the
buffer." ... "On Serial INSTR sessions, if this attribute is set to VI_FALSE, the write will
transmit the exact contents of the user buffer, without modifying it and without
appending anything to the data being written. If this attribute is set to
VI_TRUE, VISA will perform the behavior described in
VI_ATTR_ASRL_END_OUT." This corresponds to "Message Based Settings->Send End Enable" (Send End En), no?
For
VI_ATTR_ASRL_END_OUT it says that it "indicates the method used to
terminate write operations." ... "If it is set to
VI_ASRL_END_TERMCHAR, and
VI_ATTR_SEND_END_EN is set to
VI_TRUE, the write will send the character in
VI_ATTR_TERMCHAR after the data being transmitted. If
VI_ATTR_SEND_END_EN is set to
VI_FALSE, the write will transmit the exact contents of
the user buffer, without modifying it and without appending anything to the data
being written." This corresponds to "Serial Settings->End Mode for Writes" (ASRL End Out), right?
For
VI_ATTR_TERMCHAR_EN it says that it "is a flag that determines whether the read operation should terminate when a
termination character is received. This attribute is valid for both raw I/O
(viRead) and formatted I/O (viScanf).". It doesn't say anything about writes. This corresponds to "Message Based Settings->Termination Character Enable" (TermChar En), right?
Why would you need to set VI_ATTR_TERMCHAR_EN if you're just doing writes? Admittedly, I've never done VISA Writes to the serial port in this fashion, as I've had wrapper functions for instruments that were serial based, and I handled the message formatting withing the "Write" VIs, and they just added a carriage return. I just found this easier than messing around with VISA properties.