You did not explain what the problem is.
Basically, you correctly get ASCII from characters.
If you never change pull_shelf_104, it would be better to change its definition to
readonly string pull_shelf_104 = string.Format("{0}01P00104##{1}", STX, ETX);
I can see the syntax error in the call to
WrapString
, should be
byte data = WrapString(pull_shelf_104);
You may have some other problems; I just explain on those I noticed.
Again, I want to remind you that, in many cases, you would need to execute all communications in separate thread(s). It might be not good that you do some communication in UI, some click handler.
—SA