Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 2:e78c0ddcf337, committed 2018-08-26
- Comitter:
- sgrsn
- Date:
- Sun Aug 26 08:42:11 2018 +0000
- Parent:
- 1:d611aa1f9f70
- Commit message:
- Use AsyncSerial for Serial require.
Changed in this revision
| JrkG2.cpp | Show annotated file Show diff for this revision Revisions of this file |
| JrkG2.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/JrkG2.cpp Sat Aug 25 13:15:38 2018 +0000
+++ b/JrkG2.cpp Sun Aug 26 08:42:11 2018 +0000
@@ -1,5 +1,7 @@
#include <JrkG2.h>
+#define serial_delay_us 1500 //baud:9600
+
/**** JrkG2Serial ****/
void JrkG2Serial::commandW7(uint8_t cmd, uint8_t val)
@@ -25,8 +27,10 @@
uint8_t val;
sendCommandHeader(cmd);
+ wait_us(serial_delay_us);
if(_stream->readable() != 1)
{
+ _stream->abort_read();
_lastError = JrkG2CommReadError;
return 0;
}
@@ -41,12 +45,10 @@
sendCommandHeader(cmd);
- //if(_stream->ByteCount() != 2) //バッファリング未実装のため不可
- // → BufferedSerialを使用すべきか, タイムアウトも実装したい
-
- //これ以降も同様の理由で修正される
- if(_stream->readable() == 0)
+ wait_us(serial_delay_us);
+ if(_stream->readable() != 2)
{
+ _stream->abort_read();
_lastError = JrkG2CommReadError;
return 0;
}
@@ -65,11 +67,12 @@
sendCommandHeader(cmd);
serialW7(offset);
+ wait_us(serial_delay_us);
serialW7(length);
-
- //if(_stream->ByteCount() != length)
- if(_stream->readable() != 1)
+ wait_us(serial_delay_us);
+ if(_stream->readable() != length)
{
+ _stream->abort_read();
_lastError = JrkG2CommReadError;
// Set the buffer bytes to 0 so the program will not use an uninitialized
// variable.
--- a/JrkG2.h Sat Aug 25 13:15:38 2018 +0000
+++ b/JrkG2.h Sun Aug 26 08:42:11 2018 +0000
@@ -1,6 +1,7 @@
#pragma once
#include "mbed.h"
+#include "AsyncSerial.hpp"
/*example**********************************
@@ -12,7 +13,7 @@
//on the other or both
//on Serial
- Serial device(p9, p10);
+ AsyncSerial device(p9, p10);
JrkG2Serial jrk(&device);
//on I2C
@@ -1695,10 +1696,10 @@
/// Represents a serial connection to a Jrk G2.
///
/// For the high-level commands you can use on this object, see JrkG2Base.
-class JrkG2Serial : public JrkG2Base //public Stream
+class JrkG2Serial : public JrkG2Base
{
public:
- JrkG2Serial(Serial *stream, uint8_t deviceNumber = 255) :
+ JrkG2Serial(AsyncSerial *stream, uint8_t deviceNumber = 255) :
_deviceNumber(deviceNumber)
{
_stream = stream;
@@ -1708,7 +1709,9 @@
uint8_t getDeviceNumber() { return _deviceNumber; }
private:
- Serial *_stream;
+ //Serial *_stream;
+ AsyncSerial *_stream;
+
const uint8_t _deviceNumber;
virtual void commandQuick(uint8_t cmd) { sendCommandHeader(cmd); }
@@ -1722,7 +1725,6 @@
uint8_t length, uint8_t * buffer);
void sendCommandHeader(uint8_t cmd);
- //void serialW7(uint8_t val) { _stream->write(val & 0x7F); }
void serialW7(uint8_t val) { _stream->putc(val & 0x7F); }
};