dhazelman Posted January 24, 2020 Report Posted January 24, 2020 Trying to create C function to convert a String ASCII to upper case. This is what I tried and it does not work: static void PrefixToUpper(volatile char* Prefix, int PrefixLen){ // User code starts below this comment for (int i = 0; Prefix[i] != '\0' ; i++) { if(Prefix[i] >= 'a' && Prefix[i] <= 'z') { Prefix[i] = Prefix[i] - 32; } } // User code ends above this comment}// User code starts below this comment Tested the code in C compiler and it runs correctly: static void PrefixToUpper(volatile char* Prefix) { // User code starts below this comment for (int i = 0; Prefix != '\0' ; i++) { if(Prefix >= 'a' && Prefix <= 'z') { Prefix = Prefix - 32; } } // User code ends above this comment } int main() { char str[] = "hmh00234"; printf("String input: %s\n", str); PrefixToUpper(str); printf("String output: %s\n", str); }
Saragani Posted January 26, 2020 Report Posted January 26, 2020 I tested your code, in a c function downloaded to the PLC, and it works. Can you send your sample project, or at least a screen capture of the ladder call to that function?
dhazelman Posted January 27, 2020 Author Report Posted January 27, 2020 The ladder logic was working with out the PrefixToUpper call, just would fail the table lookup if the user entered lower case prefix. The table has all the prefixes stored as upper case.
Saragani Posted January 27, 2020 Report Posted January 27, 2020 OK, if you are sure that the ladder code that you've shown me is being executed, then I have no idea why it doesn't work. I could debug it better if I had the project. You can also debug it by putting in increment after the PrefixToUpper, so you can see with Online debug (or with HMI element) that the number is being incremented (and it should increment only once). You can also store Prefix Tractor Serial No into another string tag, so you could see its value after the function was called.
ORSO2001 Posted January 27, 2020 Report Posted January 27, 2020 Dear dhazelman the position "D" in the UDFB "find DTI colum value" is the starting row of the column where to search...and the position "E" is how many rows must be checked...you setted this last as "0".
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now