私は RFID リーダーを統合するコードを書き込もうとしていますが、ある程度は進んでいますが、ある種の待機時間を設定する方法についてはまだ苦労しています。
基本的に、ジェイルブレイクされたiPhoneに接続されたRFIDリーダーがあり、RFIDバッジ番号を保存する「NSMutableString」を作成しましたが、ユーザーが「AddRFID」ボタンをクリックするとシリアルポートが開かれるという問題がありますユーザーが RFID バッジをスキャンするのを待つためにループなどをセットアップする方法がわかりません。そのため、ユーザーはバッジをユーザー アカウントに関連付け、RFID バッジ # を挿入できます。 「NSMutableString」。
これを実現する方法についてアイデアがあれば、コード例をいくつか見ていただければ幸いです。
これまでのところ、これは私が持っているものです。
/* Begin addRFID - Serial Communication */
- (IBAction)addRFID:(id)sender {
// btnAddRFID pressed
NSLog(@"rfid badge # is %@",rfidbadgenumber);
// launch an alert with text input
UIAlertView *alertrfid = [[UIAlertView alloc] initWithTitle:@"Scan RFID badge"
message:@"Associate RFID badge with user account"
delegate:self
cancelButtonTitle:@"Dismiss"
otherButtonTitles:@"Save", nil];
// set alert with a text input field
[alertrfid setAlertViewStyle:UIAlertViewStylePlainTextInput];
// set text field input to max character length of 10
//[[alertrfid textFieldAtIndex:0].text substringWithRange:NSMakeRange(0,10)];
[alertrfid show];
// set the delegate for the UIAlertView textfield
[alertrfid textFieldAtIndex:0].delegate = self;
//open serial port
[serial open:B2400];
NSLog(@"rfid badge # is: %@",rfidbadgenumber);
// assign alert input text to RFID badge #
[alertrfid textFieldAtIndex:0].text = rfidbadgenumber;
}
# pragma mark - JailbrokenSerialDelegate
- (void) JailbrokenSerialReceived:(char) ch {
NSString *rfidbadgenumbernew = [[NSString alloc]init];
NSLog(@"rfidbadgenumbernew is: %@",rfidbadgenumbernew);
// put serial received data in a char buffer
[rfidbadgenumber stringByReplacingOccurrencesOfString:rfidbadgenumber withString:rfidbadgenumbernew];
NSLog(@"serialrecvd - rfidbadgenumber is: %@",rfidbadgenumber);
//[rfidbadgenumber appendFormat:@"%c", ch];
//[rfidbadgenumber stringByReplacingOccurrencesOfString:rfidbadgenumber withString:rfidbadgenumbernew];
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSLog(@"Range: %@", NSStringFromRange(range));
return (textField.text.length - range.length + string.length <= 10);
}
// add method for cancel button
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 0) {
NSLog(@"The cancel button was clicked");
rfidbadgenumber = NULL;
//rfidbadgenumbernew = NULL;
[serial close];
}
// do stuff for additonal buttons
}
// close serial port
/* End addRFID - Serial Communication */