Related
I am developing an interface of OPOS for CAT-Credit Authorization Terminal using VC++ 2010. My question is about ClearOutput method if anyone here have tried coding opos controls. When I call that function it returns code 106 which means OPOS_E_ILLEGAL.
here are the sequence of my code:
OPOSCAT.Open()
OPOSCAT.ClaimDevice()
OPOSCAT.DeviceEnabled = True
OPOSCAT.Asyncmode = true
Perform SALES and it fires event, wait until it's finish, calls OutputCompleteEvent
OPOSCAT.ClearOutput()
OPOSCAT.DeviceEnabled = False
OPOSCAT.Asyncmode = False
OPOSCAT.ReleaseDevice()
OPOSCAT.Close()
Click here for more reference:
See Chapter 5
Thanks
First, that PDF is for 1.6, which is over 15 years out of date. See http://monroecs.com/unifiedpos.htm for the current version of OPOS, which is 1.14. If nothing else you should upgrade for PCI compliance reasons.
OPOS Common Controls are pretty generic, and wouldn't have a lot of reasons to return that error on the clearOutput() method. The only thing I can think of would be if it's not in a legal state (claimed) to call it. Perhaps the previous call created an error condition so bad the device changed the state from claimed to released?
If that's not it, it's probably a device specific error. Contact the device vendor who provided the service object. You could try downloading the debug version of OPOS and enabling logging, which would provide more evidence to support this claim.
For details, please check the specification of the CAT service object you are using.
Probably because ClearOutput was called after OutputCompleteEvent, that is, after asynchronous processing of SALES has ended.
In general, the ClearOutput method is called to cancel the processing during asynchronous processing.
In your code, it is part of "wait until it's finish".
If you call the ClearOutput method while waiting for this completion, the ClearOutput method will succeed and the SALES operation (such as AuthorizeSales) will be canceled.
However, depending on the specification of the CAT service object you are using, the service object may not support the ClearOutput method.
In that case, an error occurs regardless of the time of the call.
Normally, in order to know that it's started, there's a message in Node that says "info - socket.io started". However, for some reason, I'm not getting it. Could be a version thing.
So is there another way to know if my socket is up and listening?
Have you recently updated Socket.io from version 0.9 to 1.x? The default values for log reporting changed with version 1.0, and it's less verbose by default.
See the upgrade documentation.
PS: If you upgraded Socket.io and you didn't even realize it, then it's because your "package.json" file does not lock versions. I'd strongly advise AGAINST using * as version: always be more specific, locking the versions at least to the minor version (as per semver). For example:
// In package.json, under "dependencies":
// NOT SAFE: this always gets the last version, which may have some breaking change (as per semver, with version X.Y.Z, changes in X allow breaking changes in APIs)
"socket.io": "*"
// POSSIBLY SAFE: this does not update to the new major version, so API compatibility *should* be always maintained (however, it's not 100% safe too, to be used carefully)
"socket.io": "1.x"
// SAFE: this allows updates that contain bug fixes and minor additions; API-compatibility should always be guaranteed
"socket.io": "1.0.x"
"socket.io": "1.0.*" // equivalent
"socket.io": "~1.0.4" // equivalent
Helllo,
My application is a web server that fires many requests to other servers. We set up a maximum timeout on those requests, and whenever the timeout is reached, the connection is closed and a ESOCKETTIMEDOUT rises.
Error: socket hang up
at createHangUpError (http.js:1472:15)
at Socket.socketCloseListener (http.js:1522:23)
at Socket.EventEmitter.emit (events.js:117:20)
at TCP.close (net.js:465:12)
I want to exclude these errors from the New Relic Dashboard, since they distort the error rate and other metrics. Hiding them doesn't work either, because they still count in the error rate.
How can remove specific errors (that do not have a HTTP status code) from my Dashboard?
You can pass status codes to ignore to the error collector. If you are configuring the New Relic agent using environment variables you can use a comma separated list of codes as the value for NEW_RELIC_ERROR_COLLECTOR_IGNORE_ERROR_CODES.
See the README.
If you are using newrelic.js to do so you can set the error_collector.ignore_codes value to an Array of status codes to ignore:
See the example config.
Important caveat: when setting this value manually you are overriding the default value of 404 which means that if you do not specify 404 in your manual configuration the Error Collector will start logging all 404 errors in your application (which you probably do not want).
I noticed you have javascript, I'm not sure if my solution can help you but I'll answer in the hope it does.
I use Java agent, and we have the same kind of problem. So far the only way that I found that can do something near what I want is having the specific errors wrapped in a dedicated exception ("NewRelicIgnorableException") and wrap whatever error I don't want to see in it.
Then I'd have to go into the dashboard/application and select "error collection". Last, I'd fill in the "Ignore these errors" with the full package name AND exception class name, like com.mypackage.NewRelicIgnorableException. Save and enjoy. These particular errors should not impact your apdex, but they will still count towards RPM and other metrics.
Other solutions have drawbacks. For example if I call ignoreexception the RPM and time metrics will not count. If you click the "hide error" button you only hide them from the error panel, but everything else will be as usual. If you ignore by status code you can get more or less the same results as ignoring the specific exception, but without any hope for fine control.
It's a pity that there's so little documentation on their site, I had to run tests to find these out.
SPSearch was working as expected, initialized as:
SPSearch* new_search = [[SPSearch alloc] initWithSearchQuery: search_string
pageSize: 50
inSession: active_session
type: SP_SEARCH_SUGGEST];
I then have KVO set up for #"artists" on the SPSearch instance. This is done by way of a category that has the instance observe itself for changes in #"artists" (and others). After new_search is instantiated, [new_search setDelegate: searchController] is called, which causes the SPSearch instance to call [searchController setArtists: artists_array] when KVO becomes aware of the update.
This was all working perfectly until I updated Xcode. As far as I can tell, nothing else changed.
Now, any search (such as #"a", but not limited to that) returns 0 artists in the array provided via KVO notification.
SPSession instance.connectionState is SP_CONNECTION_STATE_LOGGED_IN when the search is created. As far as I can tell, everything is being properly instantiated, logged in, etc.
What could possibly be going on that causes search to always return no results? What are some places I might start investigating to figure out what is going on?
CocoaLibSpotify ships with a bunch of unit tests, which includes testing of SPSearch. Please run these tests (details in the readme) - if the search tests pass, have a look at how they're implemented. Your solution sounds like it could cause problems in world of ARC.
Within our organisation we use quite a few different models of telephone sets. The only thing they have in common, apart from the dialpad, is the ability to "send" hook flash. I prefer using this type of signaling for attended transfers above combinations of the usual dialpad keys to prevent the other end from receiving DTMF-tones (to prevent unwanted interactions with IVRs or bothering people on the other end).
2 questions:
How is a flash hook represented in features.conf? According to RFC2833 section 3.10 (DTMF Events) and this article (which is about a ZAP- instead of SIP-configuration, thus my doubt... see next question, also), it should be just "flash".
From my Google-quest I've learned that hook flash gets ignored by the PBX when using the SIP-protocol in Asterisk... I do get an error message when sending it: "WARNING[26159]: chan_sip.c:6487 sip_indicate: Don't know how to indicate condition 9". Is there a way to fix it/work around it?
Asterisk version: 1.8.3.2
Using "info" for dtmfmode
Tnx in advance!
In most cases you have in you adapter settings what to do with hook. IF you have, you can change that to transfer code.
Update: after code review i can say that DTMF 16 received ok and sended in 1.8.x. BUT features.c have no any action on flash(event 16)
So posible create audiohook application for asterisk to change that DTMF 16 to 2 DTMF values or invoke transfer. Will work for DTMF method SIPInfo, and such patch complexity is below-average(5-6 hours for expert)