From 61e4deff3867b515d7ce96278410ea376b55c86e Mon Sep 17 00:00:00 2001 From: Jan Breuer <jan.breuer@jaybee.cz> Date: 周二, 04 12月 2012 18:09:37 +0800 Subject: [PATCH] Update README - new way of initialization --- README.md | 24 +++++++++++++++--------- 1 files changed, 15 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 7565661..2a495c5 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,7 @@ scpi_command_t scpi_commands[] = { { .pattern = "*IDN?", .callback = SCPI_CoreIdnQ,}, { .pattern = "*RST", .callback = SCPI_CoreRst,}, + { .pattern = "MEASure:VOLTage:DC?", .callback = DMM_MeasureVoltageDcQ,}, SCPI_CMD_LIST_END }; @@ -68,28 +69,33 @@ .error = NULL, .reset = NULL, .test = NULL, + .srq = NULL, }; Important thing is command buffer. Maximum size is up to you and it should be larger than any possible largest command. - #define SCPI_BUFFER_LENGTH 256 - char myBuffer[SCPI_BUFFER_LENGTH]; + #define SCPI_INPUT_BUFFER_LENGTH 256 + static char scpi_input_buffer[SCPI_INPUT_BUFFER_LENGTH]; - scpi_buffer_t scpi_buffer = { - .length = SCPI_BUFFER_LENGTH, - .data = myBuffer, - }; The last structure is scpi context used in parser library. - scpi_t scpi_context; + scpi_t scpi_context = { + .cmdlist = scpi_commands, + .buffer = { + .length = SCPI_INPUT_BUFFER_LENGTH, + .data = scpi_input_buffer, + }, + .interface = &scpi_interface, + .registers = scpi_regs, + }; All these structures should be global variables of the c file or allocated by function like malloc. It is common mistake to create these structures inside a function as local variables of this function. This will not work. If you don't know why, you should read something about [function stack.](http://stackoverflow.com/questions/4824342/returning-a-local-variable-from-function-in-c). -Now we are ready to connect everything together +Now we are ready to initialize SCPI context. It is possible to use more SCPI contexts and share some configurations (command list, registers, units list, error callback...) - SCPI_Init(&scpi_context, scpi_commands, &scpi_buffer, &scpi_interface); + SCPI_Init(&scpi_context); Test implementation of function myWrite, which outputs everything to stdout, can be -- Gitblit v1.9.1