EXPORT(sqInt) primitiveSerialPortRead(void) { sqInt bytesRead; sqInt portNum; char *array; sqInt startIndex; sqInt count; sqInt _return_value; portNum = interpreterProxy->stackIntegerValue(3); interpreterProxy->success(interpreterProxy->isBytes(interpreterProxy->stackValue(2))); array = ((char *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(2)))); startIndex = interpreterProxy->stackIntegerValue(1); count = interpreterProxy->stackIntegerValue(0); if (interpreterProxy->failed()) { return null; } interpreterProxy->success((startIndex >= 1) && (((startIndex + count) - 1) <= (interpreterProxy->byteSizeOf((oopForPointer( array ) - BASE_HEADER_SIZE))))); bytesRead = serialPortReadInto(portNum, count, (array + startIndex) - 1); _return_value = interpreterProxy->integerObjectOf(bytesRead); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(5, _return_value); return null; }
primitiveSerialPortRead(void) { char *array; sqInt arrayPtr; sqInt bytesRead; sqInt count; sqInt portNum; sqInt startIndex; sqInt _return_value; portNum = stackIntegerValue(3); success(isBytes(stackValue(2))); array = ((char *) (firstIndexableField(stackValue(2)))); startIndex = stackIntegerValue(1); count = stackIntegerValue(0); if (failed()) { return null; } success((startIndex >= 1) && (((startIndex + count) - 1) <= (byteSizeOf(((sqInt)(sqIntptr_t)(array) - BaseHeaderSize))))); arrayPtr = ((((sqInt)array)) + startIndex) - 1; bytesRead = serialPortReadInto( portNum, count, arrayPtr); if (failed()) { return null; } _return_value = integerObjectOf(bytesRead); popthenPush(5, _return_value); return null; }
/* Read up to count bytes from the named serial port into the given byte array. Read only up to the number of bytes in the port's input buffer; if fewer bytes than count have been received, do not wait for additional data to arrive. Return zero if no data is available. */ int serialPortReadIntoByName(const char *portName, int count, void *startPtr) { int portNum = portNumberForName(portName); if (portNum < 0) { success(false); return 0; } return serialPortReadInto(portNum, count, startPtr); }