| | |
| | | */ |
| | | size_t strToFloat(const char * str, float * val) { |
| | | char * endptr; |
| | | *val = SCPIDEFINE_strtof(str, &endptr); |
| | | *val = (float)SCPIDEFINE_strtof(str, &endptr); |
| | | return endptr - str; |
| | | } |
| | | |
| | |
| | | if ((pattern_len > 0) && pattern[pattern_len - 1] == '#') { |
| | | size_t new_pattern_len = pattern_len - 1; |
| | | |
| | | pattern_sep_pos_short = patternSeparatorShortPos(pattern, new_pattern_len); |
| | | pattern_sep_pos_short = (int)patternSeparatorShortPos(pattern, new_pattern_len); |
| | | |
| | | return compareStrAndNum(pattern, new_pattern_len, str, str_len, num) || |
| | | compareStrAndNum(pattern, pattern_sep_pos_short, str, str_len, num); |
| | | } else { |
| | | |
| | | pattern_sep_pos_short = patternSeparatorShortPos(pattern, pattern_len); |
| | | pattern_sep_pos_short = (int)patternSeparatorShortPos(pattern, pattern_len); |
| | | |
| | | return compareStr(pattern, pattern_len, str, str_len) || |
| | | compareStr(pattern, pattern_sep_pos_short, str, str_len); |
| | |
| | | int32_t *number_ptr = NULL; |
| | | |
| | | const char * pattern_ptr = pattern; |
| | | int pattern_len = strlen(pattern); |
| | | int pattern_len = (int)strlen(pattern); |
| | | |
| | | const char * cmd_ptr = cmd; |
| | | size_t cmd_len = SCPIDEFINE_strnlen(cmd, len); |
| | |
| | | } |
| | | |
| | | while (1) { |
| | | int pattern_sep_pos = patternSeparatorPos(pattern_ptr, pattern_len); |
| | | int pattern_sep_pos = (int)patternSeparatorPos(pattern_ptr, pattern_len); |
| | | |
| | | cmd_sep_pos = cmdSeparatorPos(cmd_ptr, cmd_len); |
| | | cmd_sep_pos = (int)cmdSeparatorPos(cmd_ptr, cmd_len); |
| | | |
| | | if ((pattern_sep_pos > 0) && pattern_ptr[pattern_sep_pos - 1] == '#') { |
| | | if (numbers && (numbers_idx < numbers_len)) { |
| | |
| | | if (cmd_len == 0) { |
| | | /* verify all subsequent pattern parts are also optional */ |
| | | while (pattern_len) { |
| | | pattern_sep_pos = patternSeparatorPos(pattern_ptr, pattern_len); |
| | | pattern_sep_pos = (int)patternSeparatorPos(pattern_ptr, pattern_len); |
| | | switch (pattern_ptr[pattern_sep_pos]) { |
| | | case '[': |
| | | brackets++; |
| | |
| | | |
| | | //组合复合SCPI命令 |
| | | scpi_bool_t composeCompoundCommand(const scpi_token_t * prev, scpi_token_t * current) { |
| | | size_t i; |
| | | int i; |
| | | |
| | | /* Invalid input */ |
| | | if (current == NULL || current->ptr == NULL || current->len == 0) |
| | |
| | | unsigned char c1, c2; |
| | | |
| | | for (; n != 0; n--) { |
| | | c1 = tolower((unsigned char) *s1++); |
| | | c2 = tolower((unsigned char) *s2++); |
| | | c1 = (unsigned char)tolower((unsigned char) *s1++); |
| | | c2 = (unsigned char)tolower((unsigned char) *s2++); |
| | | if (c1 != c2) { |
| | | return c1 - c2; |
| | | } |
| | |
| | | |
| | | if (fi != 0) { |
| | | r1 = r1 * 308 / 1024 - ndigits; |
| | | w2 = bufsize; |
| | | w2 = (int)bufsize; |
| | | while (r1 > 0) { |
| | | fj = modf(fi / 10, &fi); |
| | | r2++; |
| | |
| | | } |
| | | while (fi != 0) { |
| | | fj = modf(fi / 10, &fi); |
| | | buf[--w2] = (int) ((fj + .03) * 10) + '0'; |
| | | buf[--w2] = (char) ((fj + .03) * 10) + '0'; |
| | | r2++; |
| | | } |
| | | while (w2 < (int) bufsize) buf[w1++] = buf[w2++]; |
| | |
| | | while (w1 <= w2 && w1 < (int) bufsize) { |
| | | arg *= 10; |
| | | arg = modf(arg, &fj); |
| | | buf[w1++] = (int) fj + '0'; |
| | | buf[w1++] = (char) fj + '0'; |
| | | } |
| | | if (w2 >= (int) bufsize) { |
| | | buf[bufsize - 1] = '\0'; |