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.
Dependencies: mbed libscpi_parser
Revision 0:69a0784b9b53, committed 2014-11-14
- Comitter:
- iesensor
- Date:
- Fri Nov 14 01:11:29 2014 +0000
- Commit message:
- rename lib to scpi_parser
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README.md Fri Nov 14 01:11:29 2014 +0000 @@ -0,0 +1,30 @@ + +scpi_parser +============== +based on scpi_parser (https://github.com/j123b567/scpi-parser.git ) v1.1 Oct 2014 +BSD license +tested by: qingfeng.xia iesensor.com +origin https://github.com/qingfengxia/scpi-parser.git +upstream https://github.com/j123b567/scpi-parser.git + +usage +============= +in order to use the online IDE, the header and source files needs to be re-organized. +The zip folder can be downloaded and re-imported as a program. + +this program is published on mbed after tested on FR64K. +after download bin into flash disk, it needs to push the reset button to start program! + +include "mbed.h" is not necessary +stdio.h using usb-serial, there is no need to init it, printf() will just work! +baud rate is 9600 mode 8n1 by default, + + +to-do +============= +Tcp and RTOS example +virtual instrument with realtime capability + +Arduino +============= +Similarly, this scpi_parser could be used with Arduino, by re-organization of the header and source files to accomendate the limited Arduino IDE compilation system. \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.c Fri Nov 14 01:11:29 2014 +0000 @@ -0,0 +1,134 @@ +/*- + * Copyright (c) 2012-2013 Jan Breuer, + * + * All Rights Reserved + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * @file main.c + * @date Thu Nov 15 10:58:45 UTC 2012 + * + * @brief SCPI parser test + * + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "scpi/scpi.h" +#include "common/scpi-def.h" + +size_t SCPI_Write(scpi_t * context, const char * data, size_t len) { + (void) context; + return fwrite(data, 1, len, stdout); +} + +scpi_result_t SCPI_Flush(scpi_t * context) { + return SCPI_RES_OK; +} + +int SCPI_Error(scpi_t * context, int_fast16_t err) { + (void) context; + + fprintf(stderr, "**ERROR: %d, \"%s\"\r\n", (int32_t) err, SCPI_ErrorTranslate(err)); + return 0; +} + +scpi_result_t SCPI_Control(scpi_t * context, scpi_ctrl_name_t ctrl, scpi_reg_val_t val) { + if (SCPI_CTRL_SRQ == ctrl) { + fprintf(stderr, "**SRQ: 0x%X (%d)\r\n", val, val); + } else { + fprintf(stderr, "**CTRL %02x: 0x%X (%d)\r\n", ctrl, val, val); + } + return SCPI_RES_OK; +} + +scpi_result_t SCPI_Test(scpi_t * context) { + fprintf(stderr, "**Test\r\n"); + return SCPI_RES_OK; +} + +scpi_result_t SCPI_Reset(scpi_t * context) { + fprintf(stderr, "**Reset\r\n"); + return SCPI_RES_OK; +} + +scpi_result_t SCPI_SystemCommTcpipControlQ(scpi_t * context) { + return SCPI_RES_ERR; +} + +/* + * + */ +int main(int argc, char** argv) { + (void) argc; + (void) argv; + int result; + + SCPI_Init(&scpi_context); + +#define TEST_SCPI_INPUT(cmd) result = SCPI_Input(&scpi_context, cmd, strlen(cmd)) + + TEST_SCPI_INPUT("*CLS\r\n"); + TEST_SCPI_INPUT("*RST\r\n"); + TEST_SCPI_INPUT("MEAS:volt:DC? 12,50;*OPC\r\n"); + TEST_SCPI_INPUT("*IDN?\r\n"); + TEST_SCPI_INPUT("SYST:VERS?"); + TEST_SCPI_INPUT("\r\n*ID"); + TEST_SCPI_INPUT("N?"); + TEST_SCPI_INPUT(""); // emulate command timeout + + TEST_SCPI_INPUT("*ESE\r\n"); // cause error -109, missing parameter + TEST_SCPI_INPUT("*ESE 0x20\r\n"); + + TEST_SCPI_INPUT("*SRE 0xFF\r\n"); + + TEST_SCPI_INPUT("IDN?\r\n"); // cause error -113, undefined header + + TEST_SCPI_INPUT("SYST:ERR?\r\n"); + TEST_SCPI_INPUT("SYST:ERR?\r\n"); + TEST_SCPI_INPUT("*STB?\r\n"); + TEST_SCPI_INPUT("*ESR?\r\n"); + TEST_SCPI_INPUT("*STB?\r\n"); + + TEST_SCPI_INPUT("meas:volt:dc? 0.01 V, Default\r\n"); + TEST_SCPI_INPUT("meas:volt:dc?\r\n"); + TEST_SCPI_INPUT("meas:volt:dc? def, 0.00001\r\n"); + TEST_SCPI_INPUT("meas:volt:dc? 0.00001\r\n"); + + + //printf("%.*s %s\r\n", 3, "asdadasdasdasdas", "b"); + // interactive demo + //char smbuffer[10]; + //while (1) { + // fgets(smbuffer, 10, stdin); + // SCPI_Input(&scpi_context, smbuffer, strlen(smbuffer)); + //} + + + return (EXIT_SUCCESS); +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Fri Nov 14 01:11:29 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/031413cf7a89 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scpi_parser.lib Fri Nov 14 01:11:29 2014 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/iesensor/code/libscpi_parser/#d8aca47812e0