我目前正在使用node js处理ASTM协议,问题是我无法正确向设备发送消息 例如,我想发送这条消息:
let msg = "H|!~|||LISHOST|||||||P|LIS2-A2|20040318235959
P|1||12345677||AHMED!SARMOUM||20120112!4!Y|M|||||
O|1|SID_133||!!!CD|||20160510111238||||N||||WB
L|1|N"
当前目标机器是SELECTRA和COBAS E411
async function messageHostQuery(lastname, firstname, id, sendCodes) {
try {
let value = [];
sendCodes.map((val, index) => {
value += `^^^${val}\\`;
});
let Header = '1H|\\^&||||||||||P|1';
let Patient = `2P|1||||${lastname}^${firstname.slice(0,10)}`;
let Order = `3O|1|${id}||${value.toString().slice(0,
-1)}|R||||||N||||||||||||||Q`;
let endMessage = `4L|1`
return {Header: Header, Patient: Patient, Order: Order, End: endMessage}
} catch (err) {
if(err instanceof Error) {
return Promise.reject(err)
}
}
};
const messageCreatorHostQuery = async (Header, Patient, Order, End) => {
try {
const STX = 0x02; // Start of Text
const ETX = 0x03; // End of Text
const ETB = 0x17; // End of Transmission Block
const CR = 0x0d; // Carriage Return
const LF = 0x0a; // Line Feed
const ACK = 0x06; // Acknowledgment
const NAK = 0x15; // Not Acknowledgment
const EOT = 0x04; // Fin de transmisión
const ENQ = 0x05; // Solicitud de respuesta
const INIT = 0x1c;
const STX_ = "\x02"; // Start of Text
const ETB_ = "\x17"; // End of Transmission Block
const ETX_ = "\x03"; // End of Transmission Block
const CR_ = "\x0D"; // Carriage Return
const LF_ = "\x0A"; // Line Feed
const ACK_ = "\x06"; // Line Feed
let messages = [
Buffer.from([STX]) +
`${Header}` +
Buffer.from([CR]) +
Buffer.from([ETX]) +
`${calculateChecksum(`${Header}${CR_}${ETX_}`)}` +
Buffer.from([CR]) +
Buffer.from([LF]),
Buffer.from([STX]) +
`${Patient}` +
Buffer.from([CR]) +
Buffer.from([ETX]) +
`${calculateChecksum(`${Patient}${CR_}${ETX_}`)}` +
Buffer.from([CR]) +
Buffer.from([LF]),
Buffer.from([STX]) +
`${Order}` +
Buffer.from([CR]) +
Buffer.from([ETX]) +
`${calculateChecksum(`${Order}${CR_}${ETX_}`)}` +
Buffer.from([CR]) +
Buffer.from([LF]),
Buffer.from([STX]) +
`${End}` +
Buffer.from([CR]) +
Buffer.from([ETX]) +
`${calculateChecksum(`${End}${CR_}${ETX_}`)}` +
Buffer.from([CR]) +
Buffer.from([LF]),
];
return messages;
} catch (error) {
if (error instanceof Error) {
return Promise.reject(error.message);
}
}
};